728x90
https://www.acmicpc.net/problem/2745
📝 나의풀이
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String N = scanner.next(); //수N
int B = scanner.nextInt(); //수B
long result = 0; //결과값을 담을 변수. int의 범위를 초과할 수 있으니 long으로 담아준다.
for(int i = 0; i<N.length() ; i++ ) {
//result에 다시 b를 곱해서 계속해서 거듭제곱
if( '0'<= N.charAt(i) && N.charAt(i) <='9') { //한자리를 뽑아내서 비교.
result = result * B + ((int)N.charAt(i)-(int)'0');
} else {
result = result * B + ((int)N.charAt(i)-(int)'A'+10);
}
}
System.out.println(result);
}
}
- 10진수로 바꾸는 법은 몇 진수이든 방법이 같다
각 자리의 10진수 숫자 진수의 각 자리수 제곱 모두 더하기
예를들어 2진수 1101일때에는 12^3 + 12^2 + 02^1 + 1*2^0 = 13 - for문으로 result에 다시 b를 곱해 계속해서 거듭 제곱 하는 방식으로 10진수를 변환하여 result를 출력 한다.
728x90
'코딩테스트 > [JAVA] 백준' 카테고리의 다른 글
[백준 | 2738번] 행렬 덧셈 (0) | 2023.08.10 |
---|---|
[백준 | 2501번] 약수 구하기 (0) | 2023.08.10 |
[백준 | 10811번] 바구니 뒤집기 (0) | 2023.08.10 |
[백준 | 5086번] 배수와 약수 (0) | 2023.08.10 |
[백준 | 2743번] 단어 길이 재기 (0) | 2023.08.10 |