https://www.acmicpc.net/problem/11005
11005번: 진법 변환 2
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
2가지 방법으로 풀어보았다.
기억해야할 것은 정수형 숫자에 + '0' 하면 '숫자' 꼴인 char형으로 변환이 되고 정수형 숫자 + 'A'를 하면 숫자만큼 알파벳이 증가한다.
예시)
0 + 'A' = 'A'
1 + 'A' = 'B'
2 + 'A' = 'C'
5 + '0' = '5'
6 + '0' = '6'
#include <iostream>
#include <stack>
using namespace std;
int N, B;
stack<int> v;
int main() {
	cin >> N >> B;
	
	int tmp = N;
	while (tmp >= B) {
		v.push(tmp % B);
		tmp /= B;
	}
	v.push(tmp);
	while (!v.empty()) {
		int n = v.top();
		v.pop();
		if (n >= 10) cout << char(n - 10 + 'A');
		else cout << n;
	}
}
#include <iostream>
using namespace std;
int N, B;
char c[40];
int main() {
	cin >> N >> B;
	int i = 0;
	while (N>0) {
		int temp = N % B;
		if (temp >= 10) c[i] = temp - 10 + 'A'; //10이상은 A
		else c[i] = temp + '0'; //int to str
		i++;
		N /= B;
	}
	for (int j = i-1; j >= 0; j--) {
		cout << c[j];
	}
}
package algorithm;
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int N = sc.nextInt();
		int B = sc.nextInt();
		StringBuilder sb = new StringBuilder();
		while(N>0) {
			if(N%B>=10) {
				sb.append((char)(N%B-10+'A'));
			}else sb.append((char)(N%B+'0'));
			N/=B;
		}
		System.out.println(sb.reverse());
	}
}'Algorithm > 구현' 카테고리의 다른 글
| [백준] 2671번 : 잠수함식별 (C++) (0) | 2021.09.25 | 
|---|---|
| [백준] 2003번 : 수들의 합 2 (C++) (0) | 2021.09.22 | 
| [백준] 17837번 : 새로운 게임 2 (C++) (삼성 SW 역량테스트) (0) | 2021.09.19 | 
| [프로그래머스] 괄호 변환 (C++) (2020 KAKAO BLIND RECRUITMENT) (0) | 2021.09.10 | 
| [백준] 10250번 : ACM 호텔 (0) | 2021.09.02 | 
										
									
										
									
										
									
										
									
댓글