반응형
B진법의 수 N을 10진법으로 변환하는 문제다.
알파벳이 포함되어 있으므로 문자열로 입력을 받는다.
그리고 각 문자에 대해 change 배열에 정수로 저장한다.
for (int i = '0'; i <= '9';i++) change[i] = i - '0';
for (int i = 'A'; i <= 'Z';i++) change[i] = 10 + i - 'A';
문자열의 길이를 구한다.
for (len = 0; input[len];len++);
문자열의 길이를 구하였으므로, 문자열 뒤에서 부터 진법 B만큼 곱하며 sum에 값을 누적한다.
최종 코드는 아래와 같다.
#include <stdio.h>
int N, B;
char input[10000];
int change['Z' + 1];
int main(void)
{
int len, mul, sum;
for (int i = '0'; i <= '9';i++) change[i] = i - '0';
for (int i = 'A'; i <= 'Z';i++) change[i] = 10 + i - 'A';
scanf("%s %d", input, &B);
for (len = 0; input[len];len++);
sum = 0, mul = 1;
for (int i = len - 1; i >= 0; i--)
{
sum += change[input[i]] * mul;
mul *= B;
}
printf("%d\n", sum);
return 0;
}
10진법 수 N을 B로 바꾸는 것은 BOJ 11005 : 진법 변환 2를 참고하자.
반응형
'알고리즘 > BAEKJOON' 카테고리의 다른 글
BOJ 5896 : 효율적으로 소 사기 (2) | 2021.05.18 |
---|---|
BOJ 2503 : 숫자 야구 (0) | 2021.05.13 |
BOJ 2609 : 최대공약수와 최소공배수 (0) | 2021.05.05 |
BOJ 1913 : 달팽이 (0) | 2021.04.30 |
BOJ 2630 : 색종이 만들기 (0) | 2021.04.25 |
댓글