- 예제 입력1
216
- 예제 출력1
198
- 문제 접근
- 어떤 자연수 M + M의 각 자릿수 = N이라 할 때, M은 N의 생성자
- 생성자는 없는 경우도 있고 그럴 경우 0을 출력
- 문제 해결
- 자릿수를 간편하게 구하기 위해 문자열로 입력 받아 .length() 함수로 자릿수 구하기
- 각 자릿수의 최댓값은 9이므로 생성자의 최솟값은 N - N 자릿수 * 9
- 생성자가 나오는 즉시 종료
- 슈도 코드
N (어떠한 수 문자열로 저장)
constructor(생성자를 저장한 변수 선언)
start(N - N의 자릿수 * 9)
for(i = start ~ N까지 반복){
sum (i값 저장)
tmp (i값 저장)
while(tmp % 10 != 0){
sum += tmp % 10
tmp/=10
}
if(sum==N){
constructor = i;
break;
}
}
construct 출력
- 코딩하기
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String tmpN = scan.next();
scan.close();
int N = Integer.parseInt(tmpN);
int constructor = 0;
int start = N - (tmpN.length() * 9);
for(int i = start; i < N; i++){
int sum = i;
int tmp = i;
while(tmp > 0){
sum += tmp % 10;
tmp /= 10;
}
if(sum == N){
constructor = i;
break;
}
}
System.out.println(constructor);
}
최솟값의 생성자를 구하기 때문에 constructor가 나오는 순간 바로 반복문 종료
'Coding Test > Step12. 브루스 포트' 카테고리의 다른 글
[Java] 6단계. 체스판 다시 칠하기 [2839번] (0) | 2024.07.14 |
---|---|
[Java] 5단계. 영화감속 숌 [1436번] (0) | 2024.07.14 |
[Java] 4단계. 체스판 다시 칠하기 [1018번] (0) | 2024.07.14 |
[Java] 3단계. 수학은 비대면 강의입니다. [19532번] (0) | 2024.07.14 |
[Java] 1단계. 블랙잭 [2798번] (0) | 2024.07.14 |