프로그래밍 공부/백준 (C++)
[C++/백준 2745번] 진법 변환
Rocketbabydolls
2023. 7. 27. 12:26
https://www.acmicpc.net/problem/2745
2745번: 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
찾은 반례 : A 11 -> 17 출력
해결 : 알파벳 범위를 제대로 설정함.
코멘트 : 버그가 발생하면 쳐다보기보다는 직접 한줄씩 실행해 보자.
#include <iostream>
#include <stack>
#include <string>
#include <cmath>
using namespace std;
int main()
{
string N;
int B;
char tmp; // string에서 char로 변경
cin >> N >> B;
int num = 0;
int digit = 0;
int sum = 0;
for (int i = N.length() - 1; i >= 0; i--) // 조건을 >=로 변경
{
tmp = N[i];
if (B > 10)
{
if (tmp >= 'A')
{
num = (tmp - 'A' + 10); // 문자를 숫자로 변환
}
else
{
num = (tmp - '0');
}
sum += num * pow(B, digit);
}
else
{
sum += (tmp - '0') * pow(B, digit); // 문자를 숫자로 변환
}
digit++;
}
cout << sum;
return 0;
}