programmers_[3차] n진수 게임_java

2023. 4. 10. 11:45Algorithm/Programmers

728x90

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

import java.util.*;

class Solution {
    public String solution(int n, int t, int m, int p) {
        String answer = "";
    
        int nowNum = 0;
        int wantNumSize = m * (t-1) + p; // 총 구해야하는 길이
        int lengthSum = 0;
        StringBuilder sb = new StringBuilder();
        while(true){
            String binaryNum = toBinary(nowNum++, n);
            int binaryNumLength = binaryNum.length();
            lengthSum += binaryNumLength;
            sb.append(binaryNum);
            if(lengthSum >= wantNumSize){ // 구해야하는 길이를 모두 구한 경우
                break;
            }
        }
        
        char[] resultChar = sb.toString().toCharArray();
        
        //t개의 숫자 구하기
        StringBuilder result = new StringBuilder();
        for(int i = 0; i<t; i++){
            result.append(String.valueOf(resultChar[p + i*m -1]));
        }
        
        answer =result.toString();
        return answer;
    }
    
    // n진법 수로 전환
    public String toBinary(int num, int n){
        StringBuilder sb = new StringBuilder();
        if(num == 0){
            return "0";
        }
        while(num>0){
            sb.insert(0, num%n >= 10 ? String.valueOf((char)('A' + num%n-10)) : num%n);
            num = num /n ;
        }
        
        return sb.toString();
    }
}

'Algorithm > Programmers' 카테고리의 다른 글

programmers_땅따먹기_java  (0) 2023.04.10
programmers_주차 요금 계산_java  (0) 2023.04.10
programmers_[3차] 압축_java  (0) 2023.04.10
programmers_할인 행사_java  (0) 2023.04.07
programmers_피로도_java  (0) 2023.04.06