μ•Œκ³ λ¦¬μ¦˜ 문제/BOJ_Java

[BOJ/Step11] 2231 : λΆ„ν•΄ν•© (JAVA)

NaNaRinπŸ™ƒ 2021. 1. 21. 11:56

www.acmicpc.net/problem/2231

 

2231번: λΆ„ν•΄ν•©

μ–΄λ–€ μžμ—°μˆ˜ N이 μžˆμ„ λ•Œ, κ·Έ μžμ—°μˆ˜ N의 뢄해합은 Nκ³Ό N을 μ΄λ£¨λŠ” 각 자리수의 합을 μ˜λ―Έν•œλ‹€. μ–΄λ–€ μžμ—°μˆ˜ M의 뢄해합이 N인 경우, M을 N의 μƒμ„±μžλΌ ν•œλ‹€. 예λ₯Ό λ“€μ–΄, 245의 뢄해합은 256(=245+2+4+5)이

www.acmicpc.net


문제

μ–΄λ–€ μžμ—°μˆ˜ N이 μžˆμ„ λ•Œ, κ·Έ μžμ—°μˆ˜ N의 뢄해합은 Nκ³Ό N을 μ΄λ£¨λŠ” 각 자리수의 합을 μ˜λ―Έν•œλ‹€. μ–΄λ–€ μžμ—°μˆ˜ M의 뢄해합이 N인 경우, M을 N의 μƒμ„±μžλΌ ν•œλ‹€. 예λ₯Ό λ“€μ–΄, 245의 뢄해합은 256(=245+2+4+5)이 λœλ‹€. λ”°λΌμ„œ 245λŠ” 256의 μƒμ„±μžκ°€ λœλ‹€. λ¬Όλ‘ , μ–΄λ–€ μžμ—°μˆ˜μ˜ κ²½μš°μ—λŠ” μƒμ„±μžκ°€ 없을 μˆ˜λ„ μžˆλ‹€. λ°˜λŒ€λ‘œ, μƒμ„±μžκ°€ μ—¬λŸ¬ 개인 μžμ—°μˆ˜λ„ μžˆμ„ 수 μžˆλ‹€.

μžμ—°μˆ˜ N이 μ£Όμ–΄μ‘Œμ„ λ•Œ, N의 κ°€μž₯ μž‘μ€ μƒμ„±μžλ₯Ό κ΅¬ν•΄λ‚΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…λ ₯

첫째 쀄에 μžμ—°μˆ˜ N(1 ≤ N ≤ 1,000,000)이 μ£Όμ–΄μ§„λ‹€.

 

좜λ ₯

첫째 쀄에 닡을 좜λ ₯ν•œλ‹€. μƒμ„±μžκ°€ μ—†λŠ” κ²½μš°μ—λŠ” 0을 좜λ ₯ν•œλ‹€.

 

예제 μž…λ ₯ 1

216

 

예제 좜λ ₯ 1

198


풀이

숫자 nκ³Ό n의 길이 l이 μž…λ ₯되면 n의 λΆ„ν•΄ν•© m을 좜λ ₯ν•΄μ£ΌλŠ” ν•¨μˆ˜ nm을 μž‘μ„±

1. 1λΆ€ν„° nκΉŒμ§€ μˆœμ„œλŒ€λ‘œ 뢄해합을 ꡬ해 뢄해합이 nκ³Ό κ°™μœΌλ©΄ iλ₯Ό 좜λ ₯ν•˜κ³  μ’…λ£Œ

   ( n의 κ°€μž₯ μž‘μ€ μƒμ„±μžλ₯Ό ꡬ해야 ν•˜κΈ° λ•Œλ¬Έμ— 1λΆ€ν„° μˆœμ„œλŒ€λ‘œ μ‹€ν–‰ )

 

import java.util.Scanner;

public class B2231 {
	
	static int nm(int n, int l) {
		int m = n;
		for(int i = 0; i < l; i++) {
			m += n % 10;
			n /= 10;
		}
		return m;
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		int l = Integer.toString(n).length();
		
		for(int i = 1; i <= n; i++) {
			if(n == nm(i, l)) {
				System.out.println(i);
				return;
			}
		}
		System.out.println("0");
	}
}