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