C++

[백준 알고리즘] 11816번 : 8진수, 10진수, 16진수, c++

2022. 3. 5. 11:55

https://www.acmicpc.net/problem/11816

 

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

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

www.acmicpc.net

c++로 백준 11816번 문제를 풀어보겠다.

 

 

 

 

 

문제

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

8진수인 경우에는 수의 앞에 0이 주어지고, 16진수인 경우에는 0x가 주어진다.

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

입력

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

출력

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

예제 입력 1 복사

10

예제 출력 1 복사

10

 

 

 

 

<문제 풀이>

1. 숫자를 입력받는다.

2. if-else문을 통해 8진수로 변환할 수인지, 10진수로 변환할 수 인지, 16진수로 변환할 수 인지 구별한다.

    1) 16진수로 변환할 수일 때

        - 입력받은 숫자의 제일 끝에서부터 16의 0제곱을 곱해 result에 더하고, 끝에서 두번째 수에 16의 1제곱을 곱해               result 에 더하는 식으로 계산해간다.

    2) 8진수로 변환할 수일 때

        - 입력받은 숫자의 제일 끝에서부터 8의 0제곱을 곱해 result에 더하고, 끝에서 두번째 수에 8의 1제곱을 곱해               result 에 더하는 식으로 계산해간다.

    3) 10진수로 변환할 수일 때

        - 입력받은 숫자는 10진수이므로 그대로 출력한다.

 

 

 

코드는 다음과 같다.