본문 바로가기
알고리즘/BAEKJOON

BOJ 2745 : 진법 변환

by 피로물든딸기 2021. 5. 8.
반응형

알고리즘 문제 전체 링크

 

www.acmicpc.net/problem/2745

 

 

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

댓글