반응형
문제 링크 / level: Bronze I
https://www.acmicpc.net/problem/1110
내가 생각한 풀이
간단한 문제인데 자릿수 이야기가 있어서 문자열로 할까 숫자로 할까 고민하다가 브론즈 문제라서 그냥 간단하게 숫자로 풀었다. 자릿수는 나눗셈과 모듈러 연산으로 처리해줌.
몇 가지 포인트는,
1. 연산하려는 숫자가 한 자릿수일 때와 두 자릿수일 때로 나눠서 처리하는 것
2. 덧셈 연산 한 번 할 때마다 카운트(cnt)도 하나씩 증가시켜주는 것
3. 연산 결과를 활용해 새로운 수를 만들고 new_num에 업데이트 해주기
4. 새로운 수가 처음에 입력받았던 N과 같은 숫자인지 확인 (여기서 매번 N과 비교해줘야하니까 N은 그대로 가지고 있어야 한다.)
이 모든 과정이 몇 번 반복될지 모르니 전체는 while문으로 처리.
// 핵심 코드
while (true) {
if (new_num < 10) {
num1 = 0;
num2 = new_num;
} else {
num1 = new_num / 10;
num2 = new_num % 10;
}
result = num1 + num2;
cnt++;
// 새로운 수로 업데이트 해주기
new_num = (num2 % 10) * 10 + (result % 10);
// 원래의 수로 돌아왔는지 체크
if (new_num == N) {
break; // 끝내기.
}
}
이렇게 간단한 문제인데도 나는 처음에 무한루프가 걸렸다.
정신을 놨는지 원래의 수로 돌아왔는지 체크하는 로직의 위치를 잘못 놨고, 그보다 더 심각한 문제는 new_num과 N을 비교해야하는데 result랑 비교하고 앉아있었다. 그래서 무한루프 걸렸는데 자존심 상하지만 그래도 디버깅으로 해결함.🤔 (뭐 어쨌든 해결했으니까....^_^)
아참, 웬만하면 BufferedReader를 쓰는데 이 문제는 입력값이 숫자 하나뿐이어서.. 그냥 귀찮아서 Scanner로 처리했다.😊
💌 전체 코드 보기:
반응형
'🥇Problem Solving (psS2mj) > BOJ' 카테고리의 다른 글
[BOJ] 2740. 행렬 곱셈 (Java) (0) | 2020.05.28 |
---|---|
[BOJ] 10093. 숫자 (Java) (0) | 2020.05.24 |
[BOJ] 14681. 사분면 고르기 (Java) (0) | 2020.05.23 |
[BOJ] 1205. 등수 구하기 (Java) (0) | 2020.05.22 |
[BOJ] 10026. 적록색약 (Java) (0) | 2020.04.20 |
댓글