-
[알고리즘-JAVA] 백준 알고리즘 2745번 - 진법 변환알고리즘 2019. 8. 7. 16:49
접근 과정
1. 어떤 문제로 이해 했는가? 그리고 문제의 제약 조건은?B진법 수 N을 10진법으로 바꾸는 문제.
2. 나의 방식대로 문제를 재정의 하자.
진법 변환을 하면 된다.
3. 어떤 알고리즘과 자료구조를 사용할 것인가?진법 변환
4. 어떻게 계산할 것인가?
1) 입력BufferedReader, InputStreamReader를 이용
2) 시간 복잡도 계산
O(N) -> 받은 N을 읽어서 계산하는 과정
5. 주의할 점은 무엇인가?배열을 따로 만들지 않는다.
6. 풀이 과정
10진법수 = N[0] * B^k + N[1] * B^k-1 + N[2] * B^k-2 ...
로 변환할 수 있는데, 이때 모든 B^k를 따로 만들지 말고
전체 ans에 다시 b를 곱해서 계속해서 거듭제곱 해주는 형태로 하면
불필요한 메모리 사용을 피할 수 있다.
전체 소스 코드
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; public class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer stk = new StringTokenizer(br.readLine()); String n = stk.nextToken(); int b = Integer.parseInt(stk.nextToken()); int ans = 0; for (int i = 0; i < n.length(); i++){ if ('0' <= n.charAt(i) && n.charAt(i) <= '9'){ ans = ans*b + ((int)n.charAt(i) - (int)'0'); } else{ ans = ans*b + ((int)n.charAt(i) - (int)'A' + 10); } } System.out.println(ans); } }
'알고리즘' 카테고리의 다른 글
[알고리즘-JAVA] 백준 알고리즘 11724번 - 연결 요소의 개수 (0) 2019.08.08 [알고리즘-JAVA] 백준 알고리즘 2751번 - 수 정렬하기 2 (0) 2019.08.07 [알고리즘-JAVA] 백준 알고리즘 11005번 - 진법 변환2 (0) 2019.08.07 [알고리즘-JAVA] 백준 알고리즘 1934번 - 최소공배수 (0) 2019.08.07 [알고리즘-JAVA] 백준 알고리즘 2609번 - 최대공약수와 최소공배수 (0) 2019.08.06