SSAFY/SWEA

[SWEA] 3750 : Digit sum

믕비 2023. 5. 3. 20:48

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AWHPiSYKAD0DFAUn&categoryId=AWHPiSYKAD0DFAUn&categoryType=CODE&problemTitle=&orderBy=SUBMIT_COUNT&selectCodeLang=JAVA&select-1=3&pageSize=10&pageIndex=3 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

처음엔 수의 길이를 구한 후 각 위치의 수마다 직접 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