[인프런 알고리즘 문제풀이] K진수 출력

Dayeon myeong·2021년 1월 30일
0

문제

인프런 알고리즘 문제풀이

  • The copyright in this matter is in Inflearn

입력1

31 16

출력1

1F

입력2

11 2

출력2

1011

풀이

이 문제는 n과 k를 입력받고, 10진수 n을 k진수로 변환하여 출력하는 문제이다.
이 때 k는 2,5,8,16 중 하나이다.

풀이법은 입력이 11 2 이면 11을 2로 나눈 나머지를 스택에 push하고, 11을 2로 나눈 몫에서 다시
2로 나눠서 나머지를 push하는 과정을 몫이 0이 될때까지 반복한다.
16진수는 0123456789ABCDEF 순서로, 나머지가 15인 경우
0번째 인덱스부터 시작하는 ch 배열의 15번째값인 F가 나오게 해야하므로 미리 ch 배열에
0123456789ABCDEF를 넣어주어 출력해준다.

코드


/*53. k진수출력(스택클래스 사용)*/
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.StringTokenizer;

class Main
{
    public static void main (String[] args) throws java.lang.Exception
    {
        
        System.setIn(new FileInputStream("input.txt"));
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());

        String str = "0123456789ABCDEF";
        char[] ch = new char[str.length()];

        for(int i = 0;i<str.length();i++){
            ch[i] = str.charAt(i);
        }

        Stack<Integer> stack = new Stack<>();

        while(n != 0){
            stack.push(n%k);
            n = n/k;
        }

        while(!stack.empty()){
            System.out.print(ch[stack.pop()]);
        }


    }
}
profile
부족함을 당당히 마주하는 용기

0개의 댓글