[백준 2745] C언어 풀이
2023. 10. 17. 12:27ㆍBaekjoon
진법 변환
문제
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 |