반응형
실제로 존재하는 술게임이다..;;
진수변환에 관한 문제이다.
- 10~15는 각각 대문자 A~F로 출력한다.
String[] alphaForMoreThanTen = {"A","B","C","D","E","F"};
위와 같이 ABCDEF 사전을 만들어놓고, 아래와 같이 나머지값이 10~15인 값에 대하여 대체텍스트를 대입한다.
if(remain>=10&&remain<=15){
subBinary.append(alphaForMoreThanTen[remain-10]);
}else{
subBinary.append(remain);
}
- StringBuilder를 이용하여 효율성을 높인다.
일반 Stirng a = ""; 와 같이 선언하여 추가할시에 효율성 실패가 뜬다.
따라서 StringBuilder를 적극 활용 할 것을 추천한다.
class Solution {
public String solution(int n, int t, int m, int p) {
StringBuilder answer = new StringBuilder("");
StringBuilder s= new StringBuilder("0");
String[] alphaForMoreThanTen = {"A","B","C","D","E","F"};
int num=1;
while(s.length()<=m*t){
StringBuilder subBinary = new StringBuilder("");
int N = num;
while(N>0){
int remain = N%n;
N /= n;
if(remain>=10&&remain<=15){
subBinary.append(alphaForMoreThanTen[remain-10]);
}else{
subBinary.append(remain);
}
}
s.append(subBinary.reverse());
num++;
}
for(int i=0; i<t; i++){
answer.append(s.charAt(i*m+p-1));
}
return answer.toString();
}
}
참고로 진수변환 알고리즘은 아래 글에서 설명하겠다.
반응형
'코딩테스트 > Java' 카테고리의 다른 글
(2018카카오) 자물쇠와 열쇠 Java (0) | 2021.01.28 |
---|---|
[Java] 자바 진수변환 알고리즘 (0) | 2021.01.25 |
(2018카카오) 추석 트래픽 Java (0) | 2021.01.21 |
(2018카카오) 압축 LZW 알고리즘 Java (0) | 2021.01.18 |
(2018카카오) 후보키 Java (0) | 2021.01.14 |