갑자기 생각난 진수변환 문제

뱅뱅의 텃밭·2022년 8월 19일
0

IQ 테스트를 하고 결과가 나왔는데 값을 바꿔주고 싶어서 갑자기 문제가 생각나서 적어보았고 코드로 작성해보았다.

문제:
민국이가 IQ검사를 했는데 자기 생각보다 낮은 n값이 나왔다 (0 <= n < 100)
너무 낮아서 친구들한테 무시당할까봐 원하는 IQ값 W가 되도록 n옆에 작게 (t)라고 진법표시를 하려고 하는데
몇으로 해야 원하는 W값이 될 지 모르겠다고 한다. 필요할 때마다 사용할 수 있도록 민국이를 도와주자.

입력:
첫째 줄에 원래 값인 n과 원하는 값인 w를 공백 하나를 사이에 두고 입력한다.

출력:
조건을 만족하는 진법 t를 출력한다. 만족하는 t진법이 없을 시에는 0을 출력한다.

예제 입력:
48 100

예제 출력:
23

코드:

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String n = sc.next();	// 0 ~ 99
		int w = sc.nextInt();
		int t;
		int sum;
		
		sc.close();
		
		char[] cArr = n.toCharArray();
		System.out.println(cArr[cArr.length-1]);
		
		for (t=cArr[cArr.length-1]-'0'+1; t<w; t++) {
			sum = 0;
			System.out.println(t);
			for (int i=0; i<n.length(); i++) {
				sum = sum + (int)Math.pow(t, n.length()-i-1)*(n.charAt(i)-'0');
				if (sum > w) {
					break;
				}
			}
			if (sum == w) {
				System.out.println(t);
				break;
			}
		}
		if (t == w) {
			System.out.println(0);
		}
	}
}

조건도 아직 빈약할 것이고 누구한테도 검수받지 않은 문제지만 일단 풀어보았다.
코드를 다 작성하고 나서 스스로 봐도 코드가 더러워보여서 깔끔하게 다시 풀어서 다음 포스트에 올려볼 생각이다.

profile
나만의 텃밭을 가꾸어보자

0개의 댓글