처음엔 수의 길이를 구한 후 각 위치의 수마다 직접 10의 자릿수제곱으로 나누어줬다. 그랬더니 런타임에러가 났음.
그래서 그냥 charAt(index) - '0'를 사용해줬다. 이렇게 하면 너무 쉬운 거 같아서 일부러 좀 꼬아풀었는데 수의 크기를 고려안한 실수인 것 같다.
내 코드
메모리 : 49392 KB
시간 : 205 ms
코드길이 : 971 B
[내 코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Solution {
static int result;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for(int t = 1; t <= T; t++) {
sb.append('#').append(t).append(' ');
String n = br.readLine();
int nOfLength = n.length();
if(nOfLength == 1) {
result = Integer.parseInt(n);
}
else {
makeOne(n);
}
sb.append(result).append('\n');
}
System.out.print(sb);
}
public static void makeOne(String number) {
int sum = 0;
for(int i = 0; i < number.length(); i++) {
sum += number.charAt(i) - '0';
}
if(sum % 10 == sum) {
result = sum;
return;
}
String nextNumber = Integer.toString(sum);
makeOne(nextNumber);
return;
}
}
'SSAFY > SWEA' 카테고리의 다른 글
[SWEA] 4013 : 특이한 자석 (0) | 2023.05.04 |
---|---|
[SWEA] 1952 : 수영장 (0) | 2023.05.04 |
[SWEA] 11315 : 오목판정 (0) | 2023.05.03 |
[SWEA] 2817 : 부분 수열의 합 (0) | 2023.05.03 |
[SWEA] 4408 : 자기 방으로 돌아가기 (0) | 2023.05.03 |