728x90
● [문제번호 11576] Base Conversion
https://www.acmicpc.net/problem/11576
● 알아야 할 것
: A 진법 → 10 진법 → B 진법 으로 변환하는 방법
: vector 자료구조와 메소드
● 풀이 과정
: 일반적으로 11진법부터는 10 → A, 11 → B, 12 → C, .. 등으로 표현한다.
하지만 주어진 문제의 설명을 확인하면 11진법부터는 10 → 10, 11 → 11, 12 → 12, .. 로 표현한다고 서술되어있다.
그래서 각 자릿수로 입력을 받게 만들어 놓은 것 같다.
: A진법의 자릿수는 알고 있지만 B진법의 자릿수는 모르기에
입력과 출력의 vector를 구분하였다.
A진법의 각 자릿수를 입력받고
이를 10진법으로 변환하고
이를 다시 B진법으로 변환하면 된다.
● 주의 할 것
: B진법의 자릿수를 모르기에 문제에서 주어진 최대 자릿수(25)로 설정하면 된다.
그러면 변환된 B진법의 수가 25자리가 아니면 앞자리에 0이 있다.
이것까지 함께 출력하면 안되므로 앞자리에 0이 없을 때 까지 index를 옮긴 후 출력해야한다.
● 참고 할 것
: A 진법 → 10 진법 / 10 진법 → B 진법 으로 변환하는 방법 이해
● 풀이 코드
#include <bits/stdc++.h>
using namespace std;
// 입력 과 출력 vector 각각 선언
vector<int> v_input, v_output;
int A, B, M;
// A진법 -> 10진법으로 변환 할 때 사용할 가중치 weight
// A진법 -> 10진법으로 변환한 수 check_point
int weight, check_point;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
// 입력
cin >> A >> B;
cin >> M;
// A진법의 자릿수는 M
// B진법으로 변환시 최대 자릿수는 25
v_input.assign(M, 0);
v_output.assign(25, 0);
// A진법의 각 자릿수 입력
for(int m = 0; m < M; m++)
cin >> v_input[m];
// 가중치와 함께 A진법의 수 -> 10진법으로 변환
weight = 1;
for(int m = v_input.size() - 1; m >= 0; m--)
{
check_point += v_input[m] * weight;
weight *= A;
}
// 10진법 -> B진법으로 변환
for(int m = v_output.size() - 1; m >= 0; m--)
{
v_output[m] = check_point % B;
check_point /= B;
}
// 변환된 B진법의 vector 원소 중 앞에 있는 0 건너뛰기
int m = 0;
while(m < v_output.size())
{
if(v_output[m] == 0)
m++;
else
break;
}
// B진법으로 표현된 맨 앞자리 부터 출력
for( ; m < v_output.size(); m++)
cout << v_output[m] << " ";
return 0;
}
● [백준] - [알고리즘 기초 1/2] - [303 - 수학 1 (참고)] 문제집
번호 | 문제 번호 | 문제 이름 | 풀이 링크 |
1 | 11005 | 진법 변환 2 | https://pirateturtle.tistory.com/195 |
2 | 2745 | 진법 변환 | https://pirateturtle.tistory.com/196 |
3 | 11576 | Base Conversion | https://pirateturtle.tistory.com/197 |
4 | 11653 | 소인수분해 | https://pirateturtle.tistory.com/198 |
728x90
'Baekjoon > [Code.plus] 알고리즘 기초 1/2' 카테고리의 다른 글
[BOJ/백준] 11726 2×n 타일링 (0) | 2021.07.30 |
---|---|
[BOJ/백준] 1463 1로 만들기 (0) | 2021.07.30 |
[BOJ/백준] 11653 소인수분해 (0) | 2021.07.29 |
[BOJ/백준] 2745 진법 변환 (0) | 2021.07.29 |
[BOJ/백준] 11005 진법 변환 2 (0) | 2021.07.29 |
[BOJ/백준] 17103 골드바흐 파티션 (0) | 2021.07.29 |
[BOJ/백준] 2089 -2진수 (0) | 2021.07.29 |
댓글