-
백준 9506 - 약수들의 합(JAVA)Algorithm 2022. 10. 3. 17:35728x90
문제는 백준 9506번 약수들의 합이다. 브론즈 1 문제인데 생각보다 백준에서 정답이 잘 안나와 매우 화가 났었던 문제이다.
문제의 알고리즘은 매우 간단하다. 그냥 입력받은 수로 완전수를 찾고, 완전수면 필요한 형태로 적어주고, 아니면 아니라고 출력해주면 끝이다.
※ 알고리즘
1. 반복문안에서 n이라는 수를 입력받는다.
2. 약수를 구하는 방식으로 for문 안에서 입력받은 수를 나누었을 때 나머지가 0이면 된다는 것을 이용한다.
3. 약수라면 StringBuilder 안에서 append시켜 주고, 완전수를 찾기 위해 sum 변수에 합을 저장시켜준다.
4. sum이 n과 같지 않으면 완전수가 아님을 출력
5. sum이 n과 같으면 표현하고 싶은 형태로 출력해준다.
6. -1을 입력받으면 break 해준다.
사실 알고리즘은 매우 간단한데, 이해가 잘 되지 않는 것이 sum 변수에 제대로 값이 반복적으로 담아지지를 않는다. 예를 들어 6이면 1,2,3이 들어가야 하는데 이상하게도 1,2까지밖에 담아지지가 않는다. 이 점 때문에 원하는 모양 형태로 마지막 값이 형성이 안 된다. 6 = 1 + 2 + 까지 밖에 출력이 안 되는 것이다. 그래서 어쩔 수 없이 substring을 이용해서 마지막에서 3칸 앞까지 출력시켜 강제로 원하는 모양을 만들어 주었다.
시간초과가 자꾸 떠서 정말 화가 날 뻔 했던 문제이다. ㅠㅠㅠ
728x90'Algorithm' 카테고리의 다른 글
백준 14659 - 한조서열정리하고옴ㅋㅋ(JAVA) (0) 2022.10.05 백준 2163 - 초콜릿 자르기(JAVA) (1) 2022.10.05 백준 2609 - 최대공약수와 최소공배수(JAVA) (0) 2022.10.02 백준 2563 - 색종이(JAVA) (0) 2022.10.02 백준 2775 - 부녀회장이 될테야(JAVA) (0) 2022.09.28