[백준 2745] C언어 풀이

2023. 10. 17. 12:27Baekjoon

진법 변환 

문제

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

입력

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)

B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.

출력

첫째 줄에 B진법 수 N을 10진법으로 출력한다.

예제 입력 1 복사

ZZZZZ 36

예제 출력 1 복사

60466175

아 계속 틀렸다고 뜨길래 온갖 풀이를 다 보고 수정도 해봤는데 결국은 별거 아닌 실수였다..

 

ans = ans * b + (n[i] >= 'A' ? n[i] - 'A' + 10 : n[i] - '0');

단락에서 n[i]의 범위가 'A'이상이라고 표기를 해야 하는데

초과라고 표시해서 틀렸다 이런거에 1시간을 쏟다니 ㅋㅋㅋ

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
// N B를 이용해 10진법으로 바꾸기
int main() {
        char n[21];
        int ans = 0;
        int key, b, i = 0;
        scanf("%s %d", n, &b); // input
 
        while (n[i]) {
                 ans = ans * b + (n[i] >= 'A' ? n[i] - 'A' + 10 : n[i] - '0');
                 ++i;
        }
 
        printf("%d", ans);
}

'Baekjoon' 카테고리의 다른 글

[백준 5086] C언어 풀이  (1) 2023.10.18
[백준 11005] C언어 풀이  (0) 2023.10.17
[백준 C언어] 2563 풀이  (1) 2023.10.16
[백준 10789] C언어 풀이  (0) 2023.10.16
[백준 1152] C언어 풀이  (0) 2023.10.11