본문 바로가기
코딩연습

[코딩연습] 약수 구하기 (1단계)

by 마진 2021. 5. 1.

최근 공부한 반복문, 배열, 클래스를 연습하기 위해서 구름의 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위치의 요소 반환

           

 

 

 

<코드소스>

<테스트실행결과>

 

 

-참고-

구름LEVEL (goorm.io)

 

구름LEVEL

코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입니다. 기업에서 선호하는 C, C++, 파이썬(Python), 자바(Java), 자바스크립트(Javascript) 이

level.goorm.io