본문 바로가기

백준/JAVA

[JAVA] 백준_9506

9506번: 약수들의 합 (acmicpc.net)

 

9506번: 약수들의 합

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

www.acmicpc.net

[문제]

 

1.

[설명]

BufferedReader를 이용해 숫자를 입력받는다.

첫 번째 for문에서 StringBuilder의 append 함수를 이용해 약수를 추가한다.

sb를 StringTokenizer를 이용해 약수를 토큰으로 분리한다.(StringTokenizer은 String을 인자로 받으므로 sb.toString()으로 형변환을 해줘야 한다.)

(배열의 크기가 정해지지 않았으므로 첫 번째 for문을 거쳐야 한다.)

두 번째 for문을 이용해 약수 하나씩 배열에 집어넣고 배열의 원소값을 합하여 sum에 대입한다.

만약 sum과 num이 같으면 세 번째 for문을 이용해 출력문에 맞게 출력한다.

2.

[설명]

내 코드가 좀 긴 것 같아서 구글링 해보았더니 더 간결한 방법이 있었다.

내가 생성한 배열을 약수의 개수에 맞게 생성했지만, 이 방법은 num개의 크기만큼 생성한 후 약수의 개수 범위 내에서만 사용한다. 새로운 변수를 작성하지 않고 index 변수를 이용해 배열에 약수를 대입하고 약수의 개수를 센다.

시간은 두 번째가 더 빠르다.

더 좋은 방법이 있거나 잘못된 내용이 있으면 알려주세요!

'백준 > JAVA' 카테고리의 다른 글

[JAVA] 백준_11650  (0) 2023.07.29
[JAVA] 백준_2751  (0) 2023.07.28
[JAVA] 백준_2798  (0) 2023.07.25
[JAVA] 백준_9063  (0) 2023.07.24
[JAVA] 백준_2581  (0) 2023.07.19