728x90
🏆 목차.
🛒 문제
🎨 코드
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string ConvertFormation(int N, int B)
{
string str;
while (N > 0)
{
int temp = N % B;
if (temp > 9)
{
str += temp - 10 + 'A';
}
else
{
str += temp + '0';
}
N /= B;
}
return str;
}
int main()
{
int N, B;
cin >> N >> B;
auto result = ConvertFormation(N, B);
reverse(result.begin(), result.end());
cout << result;
}
🎯 풀이
백준 11005번 진법 변환 2 문제는 10진법 N을 B진법으로 바꿔 출력하는 문제입니다.
10 이상의 숫자를 표현하기 위해서 'A' 부터 시작하는 알파벳을 사용해야 합니다.
그래서 위 코드에서 10 이상의 숫자일 경우, 'A'를 기준으로 해당 숫자를 표현하기 위해 10을 빼주고 'A'를 더하여 문자를 생성했습니다.
결과적으로 temp가 10 이상일 때, 'A'부터 시작하는 알파벳을 문자열에 추가할 수 있었습니다.
반면 temp가 10 미만일 경우 숫자가 '0'부터 '9'까지 숫자로 표현됩니다. 따라서 이 부분에서는 단순히 숫자에 '0'을 더해 해당 숫자를 문자열에 추가하도록 했습니다.
위와 같은 과정을 N이 0 이하가 될 때까지 반복해 준 뒤, 문자열을 역순으로 추가했기 때문에 마지막에 reverse를 해주었습니다.
728x90
'코딩테스트' 카테고리의 다른 글
[C++] 백준 2292번 : 벌집 (0) | 2024.02.21 |
---|---|
[C++] 백준 2903번 : 중앙 이동 알고리즘 (0) | 2024.02.20 |
[C++] 백준 3009번 : 네 번째 점 (0) | 2024.02.18 |
[C++] 프로그래머스 : 문자열 겹쳐쓰기(replace) (1) | 2023.11.12 |
[C++][sort] 백준 1431번 : 시리얼 번호 (1) | 2023.11.11 |