728x90
문제 링크 : https://www.acmicpc.net/problem/2745
문제
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진법으로 출력한다.
접근 방법
입력한 문자열 N을 한글자씩 따라가면서 10진수로 변환해나간다.
해당 char 이 '0' ~ '9'인 경우와 'A'~'Z'인 경우로 나눠서 계산한다.
//
// 문자열_BOJ2745_진법변환.cpp
// Coding_Test_Practice
//
// Created by 김난영 on 2021/07/07.
// Copyright © 2021 KimNanyoung. All rights reserved.
//
#include <iostream>
#include <cmath>
using namespace std;
int main(){
string N;
int B;
cin >> N >> B;
int len = (int)N.length();
int bit = len-1;
int ans = 0;
for(int i = 0; i<len; i++){
char c = N[i];
int num = 0;
if(65<=c && c<=90) num = c - 55; //'A' ~ 'Z'
else num = c - '0';//'0' ~ '9'
ans += num * pow(B, bit-i);
}
cout << ans;
\
return 0;
}
728x90
'Algorithm(BOJ) > String' 카테고리의 다른 글
[C++] 백준 1543번 - 문서 검색 (문자열 비교) (0) | 2021.07.07 |
---|---|
[C++] 백준 5052번 - 전화번호 목록 (접두어, 문자열 비교) (0) | 2021.07.07 |
[C++] 백준 1373번 - 2진수 8진수 (문자열) (0) | 2021.07.07 |
[C++] 백준 1032번 - 명령 프롬프트 (0) | 2021.07.04 |
[C++] 백준 4949번 - 균형잡힌 세상 (Stack) (0) | 2021.07.04 |