본문 바로가기
Algorithm/구현

[백준] 11005번 : 진법 변환 2 (C++, JAVA)

by 루시킴 2021. 9. 21.

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());
	}

}

댓글