https://www.acmicpc.net/problem/2745
2745번: 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
◎ 문제

◎ 코드 및 풀이
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
|
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
String N = sc.next();
int B = sc.nextInt();
char[] arr = new char[N.length()];
for (int i = 0; i < N.length(); i++) {
arr[i] = N.charAt(i);
}
int num = 0;
for (int i = 0; i <= N.length()-1; i++) {
// 숫자일 때
if(arr[i] >= '0' && arr[i] <= '9'){
num += Math.pow(B,arr.length-i-1) * (arr[i]-48);
}
// 문자일 때
else{
num += Math.pow(B,arr.length-i-1) * (arr[i]-65+10);
}
}
System.out.println(num);
}
}
|
cs |

◎ 기록
B진법 수 N을 10진법 변환하면 (N의 n번째 자릿수의 값 * B진수^(N의 n번째 자릿수))들의 합으로 표현할 수 있다.
이를 이용해 숫자일 때 와 문자일 때를 구분하여 변환해주는 코드를 완성했다.
'코테' 카테고리의 다른 글
[프로그래머스 / Java] 점프와 순간이동 (0) | 2023.09.07 |
---|---|
[프로그래머스 / Java] 짝지어 제거하기 (0) | 2023.08.28 |
[백준 / Java] 10815번 : 숫자 카드 (0) | 2023.03.13 |
[백준 / Java] 18870번 : 좌표 압축 (0) | 2023.03.06 |
[백준 / Java] 2108번 : 통계학 (0) | 2023.03.03 |