String.replace()를 하여 문자열에 담아야 하는데 이를 하지 않아 무한 루프를 돌아 잘 안됐었다.
해결 코드
시행착오에서 겪은 문제를 해결하기 위해 문자열을 담으니 해결
importjava.util.*;classSolution{publicint[]solution(String s){int[] answer =newint[2];while(!s.equals("1")){int l = s.length();
s = s.replace("0","");int c = s.length();
answer[0]++;
answer[1]+=(l - c);
s =Integer.toBinaryString(c);}return answer;}}
2중 반복문에 하지 않으려고 수학 규칙을 찾으려고 했는데 못찾았는데 다른 사람 풀이에서 찾긴 했는데 정확한 규칙을 AI한테 물어봤는데 조금 복잡했다.
해결 코드
2중 반복문으로 접근 과정대로 해결
classSolution{publicintsolution(int n){int answer =0;for(int i =1; i <= n; i++){int sum =0;for(int j = i; j <= n; j++){
sum+= j;if(sum == n){
answer++;break;}if(sum > n)break;}}return answer;}}// 다른 사람 풀이classSolution{publicintsolution(int n){int answer =0;for(int i =1; i <= n; i +=2)if(n % i ==0) answer++;return answer;}}