최근 공부한 반복문, 배열, 클래스를 연습하기 위해서 구름의 1단계 문제를 풀어보았습니다.
<조건>
입력 : 양의 정수 출력 : 입력된 수의 약수를 공백으로 구분하여 출력
임의의 양의 정수를 입력받아 입력된 수의 약수를 공백으로 구분하여 출력하는 프로그램을 만드는 문제입니다.
우선 위와 같이 BufferedReader클래스를 통해 입력받을 수 있도록 참조변수 br이 선언되었고,
문자열 변수 input을 통해 입력된 정수(data)를 저장할 수 있도록 초기 코딩이 되어있습니다.
제가 생각한 이 문제의 논리적 해결 단계는 아래와 같습니다.
1. 산술연산을 위해 정수형변수를 선언하고 문자열 입력데이터를 여기에 형변환하여 저장한다.
-> 정수형변수 data, Integer.parseInt() 사용
2. 배열을 활용하여 입력된 정수의 약수들을 저장한다.
-> 이때, 약수의 개수가 정수마다 다르기 때문에 생성 시 요소숫자를 정하지 않아도 되는 ArrayList 사용.
-> import java.util.ArrayList;
-> 객체생성
3. data를 1~data범위의 숫자로 차례로 나누어 약수를 찾지 못하면 다시 반복하고 찾으면 이를 Arraylist 객체에 저장.
4. 저장된 ArrayList 배열의 요소들을 차례로 출력.
----------------------------------------------------------------------------------------------------------------------------
처음 문제를 접했을 땐,
ArrayList를 생각못하고 일반배열에 약수들을 정리하려고 했으나 생성할 수 없어서 당황했습니다.
(입력하는 정수값에 따라 약수의 갯수가 달라지고 때문에 기본 배열을 생성할 수 없다.)
e.g) int[] arraySample = new int[]; >> 두번째 대괄호에 요소개수를 설정해주어야함.
배열을 만들 시 요소의 갯수를 지정하지 않아도 된다는 ArrayList의 특징이 기억나서 풀 수 있었던 문제였습니다.
입문자의 글이므로 수정이 필요한 사항이 있을 시 댓글을 남겨주시면 감사하겠습니다.
----------------------------------------------------------------------------------------------------------------------------
- Integer
parseInt(String str) : 문자열을 정수형으로
- ArrayList
add(E e) : ArrayList의 맨 뒤에 요소 추가
(E는 제네릭 타입으로 향후 어떤 참조형이 와도 된다는 의미로 알고있습니다.)
size() : list내 요소 개수 반환
get(int index) : index위치의 요소 반환
<코드소스>
<테스트실행결과>
-참고-
'코딩연습' 카테고리의 다른 글
[코딩연습] 여름의 대삼각형 (구름 - 1단계) (0) | 2021.05.12 |
---|---|
[코딩연습]태민이의 취미 (구름-1단계) [통과x] (0) | 2021.05.10 |
고장난 컴퓨터 - level 1(구름, Java) (0) | 2021.05.09 |
[코딩연습] 시험성적 평균과 등급 구하기 (구름-1단계) (0) | 2021.05.03 |
[코딩연습] 369 게임 (구름 - 1단계) (0) | 2021.05.02 |