반응형
문제
이번에 다뤄볼 문제는 11005번 문제 '진법 변환2'입니다.
진법 변환2 문제에서 연습해야 할 key-point는 10진법 수를 B진법으로 바꾸는 방법 입니다.
10진법 수를 B진법으로 바꾸는 방법만 알고있다면 이 문제는 사실 별로 설명할게 없습니다.
우선 10진법 수 하나를 B로 나눈 몫이 0이 될때까지 나머지를 계속 구해주면 됩니다.
예를 들어 보여드리자면
ex) 10진법 수 11을 3진법으로 바꾸시오
11/3 = 3 ... 2
3/3 = 1 ... 0
1/3 = 0 ... 1
3진법 수 = 102
이렇게 몫이 0이 될때까지 구하고 나머지 값들을 역순으로 적어주면 끝입니다.
추가적으로 혹시나 A:10, B:11 ... 이런식으로 10진법을 넘어가는 진법은 알파벳 대문자를 사용한다는 부분에서 막혔다면, 아스키코드를 모르고 계신겁니다. 구글에서 아스키코드를 검색해보시고 아래 해답 소스를 보시면 바로 이해 할 수 있으실 겁니다.
코드(C++)
#include<iostream>
using namespace std;
int main() {
int a, b;
int arr[100];
int i = 0;
char t = 'A';
cin >> a >> b;
while (a != 0) {
arr[i] = a%b;
a = a / b;
i++;
}
i--;
for (i; i >= 0;i--){
if (arr[i] >= 10) {
for (int j = 10; j <= 35; j++) {
if (arr[i] == j) cout << t;
t++;
}
}
else cout << arr[i];
t = 'A';
}
return 0;
}
반응형
'algorithm' 카테고리의 다른 글
[C++] 백준 알고리즘 1929번 (소수 찾기) (0) | 2019.01.20 |
---|---|
[C++] 백준 알고리즘 1978번 (소수 찾기) (0) | 2018.10.26 |
[C++] 백준 알고리즘 9613번 (GCD합) (0) | 2018.10.24 |
[C++] 백준 알고리즘 2999번 (비밀 이메일) (0) | 2018.10.24 |
[C++] 백준 알고리즘 1100번 (하얀 칸) (0) | 2018.10.24 |