개요 백준 문제 11005번을 풀면서 어려웠던 점과 코드를 정리한다. 소요 시간 : 30분https://www.acmicpc.net/problem/11005
문제 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, …, F: 15, …, Y: 34, Z: 35
코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #include <iostream> #include <vector> using namespace std; void solve() { vector <int> v; long long num,digit; int result; cin >> num >> digit; while(num != 0) { v.push_back(num % digit); num /= digit; } vector<int>::reverse_iterator iter; for(iter = v.rbegin();iter != v.rend();iter++) { if(*iter >= 10) { cout << (char(*iter - 10+'A')); } else { cout << *iter; } } } int main() { solve(); }
풀이 우선 진법 변환을 하면서 결과를 저장한다 이후 저장된 결과를 끝에서 부터 조건(10이상은 알파벳 등)에 맞춰 출력한다
배운 점, 메모 c++ 벡터 문법적인 부분을 배웠다
1 2 vector<int>::reverse_iterator iter; // 거꾸로 진행되는 iteration for(iter = v.rbegin();iter != v.rend();iter++) // 인덱스 끝에서부터 인덱스 맨 앞까지 iteation 진행