- 문제
- 풀이
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int N; // B진법 수 N
int B; // B진법
string result = "";
cin >> N >> B;
while (N != 0)
{
int temp = N % B;
// 숫자라면 해당 문자에서 '0'을 더해 그 숫자에 해당하는 문자로 만듦
if (0 <= temp && temp <= 9)
{
result += (temp + '0');
}
// 값이 10 이상의 숫자일 경우 알파벳으로 출력 되야 한다.
// 따라서 - 10 + 'A'를 해서 문자로 만듦
// 예를 들어 10의 경우 문자 A로 나타내기 때문에
// 10을 A에 해당하는 65로 만들어 줘야 한다.
// 따라서 10에 -10을 빼서 0으로 만들어 준 다음 다시 'A'를 더해서
// 10 == 'A'가 되도록 한다.
else
{
result += (temp - 10 + 'A');
}
N /= B;
}
int endIndex = result.length() - 1;
// 뒤에서부터 진법 변환 결과를 하나씩 출력한다
// reverse를 써서 아예 result를 뒤집어서 출력하는 방법도 있음
for (int i = endIndex; i >= 0; i--)
{
cout << result[i];
}
return 0;
}
- 메모
2745번 진법 변환 문제와 반대 개념으로 풀어야 하는 문제다.
https://risehyun.tistory.com/452
☆ [백준/2745번/C++] 진법 변환
문제 풀이1. string을 int로 변환해주는 stoi를 이용해서 바로 답을 출력하는 방법#include #include using namespace std;int main(){ string N; int B; cin >> N >> B; cout 이 때 stoi 함수는 다음과 같이 구성된다.int stoi(c
risehyun.tistory.com
'코딩테스트' 카테고리의 다른 글
[백준/2720번/C++] 세탁소 사장 동혁 (0) | 2024.08.02 |
---|---|
☆ [백준/1193번/C++] 분수찾기 (0) | 2024.08.01 |
[백준/2563번/C++] 색종이 (0) | 2024.07.31 |
[백준/10798번/C++] 세로읽기 (0) | 2024.07.27 |
[백준/2941번/C++] 크로아티아 알파벳 (0) | 2024.07.26 |