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

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

[작성일: 2023. 09. 18]

 

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

 

 

풀이

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int b = sc.nextInt();
System.out.println(Integer.toString(n, b).toUpperCase());
}
}

 

Integer.valueOf 메서드는 문자열을 정수로 변환하는데 사용하지만 특정 진법에 따라 문자열을 정수로 변환할 수도 있다. 

이럴 때는 Integer.toString 메서드를 사용하면 된다고 한다.

 

근데 그렇게만 출력하면 소문자로 출력되기 때문에 toUpperCase()를 사용해 대문자로 변환했다.

 

하지만 이렇게 java의 라이브러리를 사용하는 것이 아닌 방법도 있다기에 공부할 겸 문제를 다시 풀었다.

 

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int b = sc.nextInt();
StringBuilder sb = new StringBuilder();
while (n > 0) {
int a = n % b;
if (a < 10) {
sb.append(a);
} else {
sb.append((char)(a + 'A' - 10));
}
n /= b;
}
System.out.println(sb.reverse());
}
}

 

n%b는 숫자 n을 b로 나누었을 때의 나머지를 반환한다. 이 나머지 값은 n을 b진법으로 변환했을 때 가장 낮은 자리값이 된다.

13을 2진법으로 변환한다고 생각했을 때,

 

13 / 2 = 6 -> 나머지 값 1

6 / 2 = 3 -> 나머지 값 0

3 / 2 = 1 -> 나머지 값 1

1 / 2 = 0 -> 나머지 값 1

 

나머지 값을 아래에서부터 위로 읽으면 13의 2진법 표현은 1101이 된다. (이렇게 반대로 출력하기 위해 reverse() 메서드를 사용했다.)

나머지 값이 10 이상일 때는 10진법의 표현을 넘어서기 때문에 알파벳으로 변환해야 한다.

 

a - 10 을 한 이유는 나머지 값이 10부터 시작하기 때문이다. 나머지가 10이면 값은 0이 되고, 나머지가 11이면 이 값은 1이 된다.

'A'를 더한 이유는 아스키 코드 값으로 65를 갖기 때문에 a-10에 'A'를 더하면 원하는 알파벳의 아스키코드 값을 얻을 수 있다.

 

여기까지 계산하면 최종 계산값은 int형이기 때문에 char형으로 형변환하여 알파벳 문자를 얻는다.

 

a - 11 = 1 + 'A' = 66 

(char)66 = B

 

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

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

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.