티스토리 뷰

문제

 

카카오 2018 공채 - n진수 게임

 

코딩테스트 연습 - [3차] n진수 게임

N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0�

programmers.co.kr

10진수를 2-16 사이의 모든 진법으로 변환하는 문제이다!

 


풀이

  • A라는 숫자를 n진법 수로 변환하려면❓
    • 1. 몫이 0이 될때까지 A를 n으로 나눈다
    • 2. 나머지를 밑에서부터 읽는다
  • 위의 방법을 함수로 만들면 되는데, 주의할 점은 10이 넘는 수는 대문자 알파벳으로 변환해야 한다 -> 아스키코드 사용하기
  • 튜브의 순서인 수만 뽑아서 리턴하면 완성!
public static String solution(int n, int t, int m, int p) {
        String answer = "";
        StringBuilder result = new StringBuilder();
        
        for(int i=0; i<t*m; i++) {
        	if(i==0) result.append(i);
        	result.append(convert(n, i));
        }
        
        for(int i=p-1; i<result.length(); i=i+m) {
        	answer += result.substring(i, i+1);
        	if(answer.length()==t) break;
        }
        
        return answer;
    }
	
    // n진법 수로 변환
	static String convert(int n, int i) {
		StringBuilder sb = new StringBuilder();
		while (i>0) {
			int rem = i % n;
			sb.append(rem >= 10 ? String.valueOf((char)('A' + (rem - 10))) : rem);
			i /= n;	
		}
		return sb.reverse().toString();
	}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함