본문 바로가기
공부 일지/문제풀이

진법변환

by Joshbla 2023. 4. 2.

문제

 

https://www.acmicpc.net/problem/2745

 

2745번: 진법 변환

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 

www.acmicpc.net


풀이

Java

import java.util.Scanner;

public class 진법변환_2745 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] NB = sc.nextLine().split(" ");
        String N = NB[0];
        Integer B = Integer.parseInt(NB[1]);
        int sum = 0;
        for (int i = 0; i < N.length(); i++) {
            char c = N.charAt(i);
            sum *= B;
            if (c >= 'A') {
                sum += (c - '7');
            } else {
                sum += (c - '0');
            }
        }
        System.out.println(sum);
    }
}

Kotlin

fun main() {
    var (n, b) = readln().split(" ")
    var sum = 0
    for (i in n.indices) {
        var c = n[i]
        sum *= b.toInt()
        if (c.isDigit()) {
            sum += c - '0'
        } else {
            sum += c - '7'
        }
    }
    println(sum)
}

What's new ?

  • 입력받을 때 var (a, b) = readln.split() 으로 바로 두개의 변수를 선언할 수 있다.
  • isDigit() 메서드는 자바에서도 있었던 메서드인데 모르고 있었다. 해당 character가 숫자인지 확인하는 함수이다.

사실 이 문제는 메서드 한줄로 끝낼 수 있다.

// Java
System.out.println(Integer.parseInt(N, B));

// Kotlin
println(n.toInt(b.toInt()))

자바에선 Integer.parseInt(A,B) 메서드

코틀린에선 A.toBigInteger(B) 메서드를사용하면 문자열A를 B진수로 변환할 수 있다. 

'공부 일지 > 문제풀이' 카테고리의 다른 글

[프로그래머스] 정수 삼각형(JAVA)  (0) 2023.04.08
[프로그래머스] N으로 표현(JAVA)  (0) 2023.04.04
세로읽기  (0) 2023.04.01
[프로그래머스] 모음사전(JAVA)  (0) 2023.03.29
바구니 뒤집기  (0) 2023.03.28