티스토리 뷰
Algorithm/[Java+Python+JavaScript]BackJoon
[BackJoon]2745번, 진법 변환, B → 10진법
Vagabund.Gni 2023. 4. 1. 18:46728x90
반응형
문제
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진법으로 출력한다.
풀이
즐거운 토요일. 빡센 문제보다는 쉬운 문제로 두어 개 풀고 딴짓하고 놀아야지~ 했다가 이 문제와 다음 문제에게 털렸다.
오히려 어줍잖게 알고리즘을 풀었던 경험 때문에 이상하게 꼬아서 풀고, 게다가 틀리기를 반복함.
문제는 별 거 없다. 말 그대로 규칙이 정해진 B진법 숫자를 10진법으로 변환하면 되는 문제다.
문제를 별 거 있게 만든 나의 습관이란, 일단 받아서 배열로 쪼갠 후 스트림을 열어서 처리하려고 했던 것.
그 와중에 숫자인지 알파벳인지도 효율적이지 못한 방법으로 나누려고 시도를 하다가 코드가 수상할 정도로 길어져서
다 지우고 다시 풀었다. 결국 내가 찾아낼 수 있던 가장 간단한 방법은 아래와 같다.
- B진법 수 N을 문자열로 입력받는다.
- 배열로 만들 거 없이 charAt()으로 끝에서부터 반복문을 돌며 10진법으로 변환해 준다.
- 이 과정에서 숫자(0-9)인 경우에도 이상한 짓 하지 말고 얌전히 아스키코드로 다뤄준다.
- 다 더해주면 끝!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Prob2745 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
String n = st.nextToken();
int b = Integer.parseInt(st.nextToken());
int sum = 0;
for (int i = 0; i < n.length(); i++) {
char c = n.charAt(n.length() - 1 - i);
if ('0' <= c && c <= '9') {
sum += (c - '0') * Math.pow(b, i);
} else {
sum += (c - 55) * Math.pow(b, i);
}
}
System.out.println(sum);
}
}
너무 어렵게 생각하지 말자..
다음 글에 계속.
반응형
'Algorithm > [Java+Python+JavaScript]BackJoon' 카테고리의 다른 글
[Python]11650번, 파이썬에서 리스트 다중정렬 하기 (0) | 2023.04.03 |
---|---|
[Python]1427번, 입력받은 문자열 리스트로 전환, 리스트 정렬 (0) | 2023.04.02 |
[BackJoon]11005번, 진법 변환2, 10 → B진법 (0) | 2023.04.01 |
[Python]10989번, 카운팅 정렬 응용 (0) | 2023.04.01 |
[Python]2751번, 병합정렬 (0) | 2023.03.31 |
[Python]2587번, 리스트 내림차순 정렬 (0) | 2023.03.30 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Algorithm
- 여행
- 자바
- 백준
- 세계여행
- 야경
- 스프링
- a6000
- 동적계획법
- 알고리즘
- 유럽여행
- 중남미
- 칼이사
- 세모
- BOJ
- 지지
- 맛집
- 기술면접
- java
- Python
- spring
- 파이썬
- 스트림
- 남미
- Backjoon
- 세계일주
- 유럽
- 면접 준비
- 리스트
- RX100M5
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함