방명록
- [백준 / 자바] 2745번 진법변환2023년 12월 13일 13시 13분 20초에 업로드 된 글입니다.작성자: 민발자728x90
문제
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
출력
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
풀이
2진수 101110 → 10진수 (1*2^5) + (0*2^4) + (1*2^3) + (1*2^2) + (1*2^1) + (0*2^0) = 46
자리수값*(진법^자리수) 패턴이 나옴
문자열로 n을 받아서 대문자인 경우 숫자로 변환 → 16진법의 경우 A는 10의미 A 아스키코드는 65 → 55빼서 10으로 변경해줌
n을 앞부터 하나씩 분리해 숫자로 변경하고 b 진법^자리수랑 곱해서 계산
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); String n = st.nextToken(); // 수 int b = Integer.parseInt(st.nextToken()); // 진법 br.close(); int answer = 0; // 정답 int num = 0; // 자리수 int idx = 0; // 지수 for(int i = n.length()-1; i >= 0; i--) { char c = n.charAt(i); // 0~9인 경우 그대로 if(c >= '0' && c <= '9'){ num = c - '0'; } else { // 대문자는 숫자로 변환 num = c - 55; } answer += num * Math.pow(b, idx++); } System.out.println(answer);
728x90'기록 > 백준' 카테고리의 다른 글
[백준 / 자바] 5086번 배수와 약수 (0) 2023.12.15 [백준 / 자바] 11005번 진법변환2 (0) 2023.12.14 [백준 / 자바] 1009번 분산처리 (0) 2023.12.12 [백준 / 자바] 2941번 크로아티아 알파벳 (0) 2023.12.02 [백준 / 자바] 10699번 오늘 날짜 (0) 2023.10.28 다음글이 없습니다.이전글이 없습니다.댓글