[백준] 2745번: 진법 변환 - JAVA

2024. 9. 18. 02:53·알고리즘

[작성일: 2023. 09. 17]

 

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

 

 

풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String b = sc.next();
        int num = sc.nextInt();

        sc.close();

        System.out.println(Integer.valueOf(b, num));

    }
}

 

Integer.valueOf는 문자열을 Integer 객체로 변환하는 메서드이다.

Integer.valueOf(String s)를 넣으면 무조건 10진법으로 변환되지만, int radix에 지정된 진법을 넣으면 진법에 맞게 변환할 수 있다.

 

 

 

+  2023. 09. 18 추가

백준 11005번 문제를 풀고 2745번 문제도 자바 라이브러리 없이 풀어보았다.

각 자릿수에 해당하는 값을 더한다. B진법의 수 n의 가장 오른쪽 자릿수부터 시작해서 10진법으로 변환 후 B로 나누어가면서 진행한다.

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String n = sc.next();
        int b = sc.nextInt();
        int result = 0;
        int power = 1;  // 가중치(B의 제곱)

        for (int i = n.length()-1; i >= 0; i--) {
            char c = n.charAt(i);
            if ('A' <= c && c <= 'Z') {  // 대문자일 경우
                result += (c - 'A' + 10) * power;
            } else {
                result += (c - '0') * power;
            }
            power *= b;  // 다음 자리의 가중치를 계산
        }

        System.out.println(result);
    }
}

 

B진법에서 각 자릿수는 B의 거듭제곱으로 표현된다.

 

1의 자리는 10⁰, 즉 1에 해당한다.

10의 자리는 10¹, 즉 10에 해당한다.

100의 자리는 10², 즉 100에 해당한다.

 

B진법에서는,

1의 자리는 B⁰, 즉 1에 해당한다.

B의 자리는 B¹, 즉 B에 해당한다.

B²의 자리는 B²에 해당한다.

 

가중치를 사용하는 이유는 각 자릿수의 숫자에 따라 결과 값에 얼마나 큰 영향을 미치는지 알기 위해서이다.

2진법에서 110이라는 숫자를 생각해보자. 이 숫자는 10진법으로 변환하면 6이 된다. 각 자리의 가중치를 사용해서 이 값을 얻을 수 있다.

 

맨 오른쪽 자리는 2⁰ x 0 = 0

중간 자리는 2¹ x 1 = 2

맨 왼쪽 자리는 2² x 1 = 4

 

이걸 전부 합하면 10진법 6이 된다. 따라서 코드에서 power 변수는 각 자릿수의 가중치를 나타내고 이것을 사용해서 최종 10진법을 계산한다.

 

저작자표시 비영리 변경금지 (새창열림)
'알고리즘' 카테고리의 다른 글
  • [백준] 2903번: 중앙 이동 알고리즘 - JAVA
  • [백준] 11005번: 진법 변환2 - JAVA
  • [백준] 2563번: 색종이 - JAVA
  • [백준] 2566번: 최댓값 - JAVA
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    성능최적화
    sql
    javascript
    게시판만들기
    프로그래머스
    Database
    자바
    자바스크립트
    생성자
    객체
    데이터베이스
    최주호
    Security
    jsp
    Java
    spring
    Spring Security
    의존성주입
    변수
    Swift
    MVC
    알고리즘
    HTTP
    다형성
    DB
    html
    스프링
    김영한
    백준
    JPA
  • hELLO· Designed By정상우.v4.10.0
뚜비
[백준] 2745번: 진법 변환 - JAVA
상단으로

티스토리툴바