[3차] n진수 게임

LJM·2023년 4월 18일
0

programmers

목록 보기
29/92

https://school.programmers.co.kr/learn/courses/30/lessons/17687

십진수를 2진수로 변환하는 함수부터 작성하였다.
그리고 16진법까지 처리하도록 함수를 구현하였다.(10~15 는 A,B,C,D,E,F 로 처리하는)

십진수를 2진수로 변환하는게 생각이 또 안나서 손으로 그려봄

4 는 100


9는 1001

그 다음에는 비교적 수월하였다.
근데 튜브가 말해야 할 숫자 1000 개를 미리 구하는 경우에 이진수 숫자를 몇개까지 구하여야 할까 이런 부분이 어려웠다 그냥 대충 1000X인원수 이렇게 해버렸다;;;

시간복잡도는 첫번째 반복문에서
O(t m logN(t * m)) 으로 볼 수 있다.

1000 * 100 * log2(1000*100)
100000 * 16
1600000
import java.util.*;

class Solution {
    public String solution(int n, int t, int m, int p) {
        //String answer = "";
        
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < t*m; i++)
            sb.append(trans(i, n));
        
        StringBuilder answer = new StringBuilder();
        for(int i = p-1; i < t*m; i+=m)
            answer.append(sb.charAt(i));
        
        return answer.toString();
    }
    
    public String trans(int input, int n)//10진수숫자, 진법종류
    {
        ArrayList<Integer> arr = new ArrayList<>();
        
        while(input >= n)
        {
            arr.add(input%n);
            input /= n;
        }
        
        arr.add(input);
        
        Collections.reverse(arr);
        
        StringBuilder sb = new StringBuilder();
        for(int i : arr)
        {                
            if(i >= 10)
            {
                i += 'A'-10;
                Character c = (char)(i);
                sb.append(c.toString());
            }
            else
                sb.append(Integer.toString(i));
        }       
        
        //System.out.println(sb);
        return sb.toString();
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글