백준 BaekJoon 11816번: 8진수, 10진수 16진수 [Java] 자바

2020-09-22


문제

정수 X가 주어진다.

정수 X는 항상 8진수, 10진수, 16진수 중에 하나이다.

8진수인 경우에는 수의 앞에 0이 주어지고,

16진수인 경우에는 0x가 주어진다.

X를 10진수로 바꿔서 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 X가 주어진다.

X는 10진수로 바꿨을 때,

1,000,000보다 작거나 같은 자연수이다.

16진수인 경우 알파벳은 소문자로만 이루어져 있다.

출력

첫째 줄에 입력받은 X를 10진수로 바꿔서 출력한다.


소스코드

		Scanner scan = new Scanner(System.in);
		String X = scan.next();
		String N ="";
		int N8 = 0;
		//8진수 값이 저장될 변수
		int N16 = 0;
		//16진수 값이 저장될 변수
		
		if(X.charAt(0) == '0') {
			//1자리 0인지 체크
			if(X.charAt(1) == 'x') {
				//2자리 x 면 16진수 for 문 실행
				for(int i = 2; i < X.length(); i++) {
					N += X.charAt(i);
					}
					N16 = Integer.valueOf(N, 16);
			}else {
				//2자리 x가 아님 8진수로 간주하고 8진수로 변환
				for(int i = 1; i < X.length(); i++) {
					N += X.charAt(i);
					}
					N8 = Integer.valueOf(N, 8);
				}
			}else {
		System.out.println(X);
	}
		
		if(N8 != 0 || N16 != 0) {
		System.out.println(N8 > N16 ? N8 : N16);
		//둘 중하나라도 0이 아니면 8진수 아니면 16진수 이기때문에 그수를 출력
		}

 

출처 링크 : www.acmicpc.net/problem/11816

 

11816번: 8진수, 10진수, 16진수

첫째 줄에 X가 주어진다. X는 10진수로 바꿨을 때, 1,000,000보다 작거나 같은 자연수이다. 16진수인 경우 알파벳은 소문자로만 이루어져 있다.

www.acmicpc.net