[백준 Math1] 11005번 문제

Kwon·2023년 12월 4일

백준

목록 보기
18/22
post-thumbnail

백준 11005번 문제

풀이

  • 10진법 수 N이 주어질 시 B진법으로 바꾸는 문제
  • 2745번과 반대의 문제
    링크텍스트
  • 똑같이 for문과 if문을 적절히 사용하면 충분히 해결 가능
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class math2 {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer =
                new StringTokenizer(bf.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        int B = Integer.parseInt(stringTokenizer.nextToken());
        boolean end = false;
        List<Integer> list = new ArrayList<>();

        do {
            if (N < B) end = true;
            int value = N % B;
            list.add(value);
            N = N / B;
        } while(!end);

        int[] array = new int[list.size()];

        for (int i = list.size() - 1; i >= 0; i--) {
            array[i] = list.get(i);
            if (list.get(i) >= 10) {
                array[i] += 55;
            }
        }
        for (int i = array.length - 1; i >= 0; i--) {
            if (array[i] >= 10) System.out.print((char) array[i]);
            else System.out.print(array[i]);
        }
    }
}

1. 10진법 값 N, B진법 변환

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer =
        new StringTokenizer(bf.readLine());
int N = Integer.parseInt(stringTokenizer.nextToken());  //10진법 수
int B = Integer.parseInt(stringTokenizer.nextToken());  //B진법
boolean end = false;
List<Integer> list = new ArrayList<>();
do {
    if (N < B) end = true;
    int value = N % B;
    list.add(value);
    N = N / B;
} while(!end);
  • 10진법 N, B진법 차례로 입력
  • do-while문을 이용해 B진법 수로 변환(식 참고: 링크텍스트)
  • 계산할 수가 더 이상 없다면 end boolean변수 참 값으로 변환

2. 결과 값 도출

int[] array = new int[list.size()];
for (int i = list.size() - 1; i >= 0; i--) {
    array[i] = list.get(i);
    if (list.get(i) >= 10) {
        array[i] += 55;
    }
}
for (int i = array.length - 1; i >= 0; i--) {
    if (array[i] >= 10) System.out.print((char) array[i]);
    else System.out.print(array[i]);
}
  • 10진법을 B진법으로 변환하면 나머지를 구한 후 반대로 값을 도출해야 함(첫 번째 for문)

  • 도출한 결과는 동적 배열 array에 삽입

profile
📲 @bu_kwon_2 / 💻 dnu05043.log / ⌨ Back-end / 🦁 LikeLion

0개의 댓글