오늘은 시험이 있어서 시험 다 보고 문제를 풀었다.
오늘 풀어본 문제는 어제와 같은 브루트 포스에 있는 2231번 분해합이라는 문제이다.
문제를 본 직후에는 좀 어렵나,, 생각했는데
조금만 생각을 해보니 어떻게 풀어야할지 감이 왔다.
생성자를 구하는 문제였고, 반복문으로 0에서부터 돌려보면서 조건에 맞는 생성자를 찾으면 될 것 같다고 생각이 들었지만
역시나 한번에 통과하지는 못했다,,🤣
public static void main(String[] args) { Scanner num = new Scanner(System.in); int input = num.nextInt(); int M = 0; int mM = 0; int sum = 0; for(int i=0; i<input; i++) { while (mM != 0) { sum += mM % 10; mM /= 10; } if(sum + M == input){ break; } } System.out.println(M); }
처음 제출한 코드이다.
사용되는 변수가 많다보니까 변수에 대한 역할이 100% 정리되지 않은 상태였고,
그 상태로 '이거겠지~'하는 생각으로 코드를 짜다보니 실수가 나왔다.
public static void main(String[] args) { Scanner num = new Scanner(System.in); int input = num.nextInt(); int M = 0; int sum = 0; for(int i=0; i<input; i++) { int number = i; sum = 0; while (number!= 0) { sum += number % 10; number /= 10; } if(sum + i == input){ M = i; break; } } System.out.println(M); }
사실 지금도 집중하지 않으면 왜 이렇게 했지,,? 하는 생각이 들기도 한다,,,ㅎ
조건에 맞는 수를 찾기위해 0에서부터 세어나갈때 그 수(i)를 나머지를 구하거나, 나누기를 한다던가 하면서 계산에 들어갈 변수를 하나 지정해서 넣어두고, i는 고정되어 있도록 해야하는 점.
내가 코드를 짜면서 안일하게 생각했던 부분이다.
이런 사소한 실수를 줄일 수 있도록 더 집중해서 풀어야겠다!!!!