[프로그래머스] n진수 게임

2020. 4. 8. 16:10프로그래머스/카카오

class Solution {
  public String solution(int n, int t, int m, int p) {
      String answer = "";
      String temp = "0";
      int flag = 1;
      int count =0;
      
      while(temp.length()<t*m){
          
         String plustemp = conver(flag,n);
         for(int i=0; i<plustemp.length(); i++){
             if(temp.length()<t*m){
             temp +=Character.toString(plustemp.charAt(i));
             }else{
                 break;
             }
         }
          flag++;
      }
      
      while(answer.length()!=t){
          answer += Character.toString(temp.charAt((p+m*count)-1));
          count ++;
      }
      System.out.println(temp);
      
      return answer;
  }
    private String conver(int flag,int n){
        StringBuffer sb = new StringBuffer();
        char[] what = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        int res;
        
        while(flag!=0){
            res = flag%n;
            flag = flag/n;
            sb.append(Character.toString(what[res]));
        }
        
        return sb.reverse().toString();
    }
}

1. 각 순서에서 외쳐야할 숫자(1~F)를 t*m개만큼 만든다.

2. n진수의 숫자를 만들기 위한 conver 메소드.

3. 역순으로 리턴해줘야 하므로 StringBuilder 사용

4. m명중 p번째 순서일때 외쳐야할 숫자를 answer의 길이가 t가 될 때까지 더해나감.