문제 : 24 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
- 124 나라에는 자연수만 존재합니다.
- 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
풀이 : 3진법과 비슷해서 공책에 계속 3으로 나누기만 하다가 코딩으로 옮겼더니 디버깅 하다가 맞춰진 경우가 됬다..
일단 10진법 수 를 3으로 나눈 나머지가 124 나라의 일의 자리가 된다 ( 나머지가 0 일 시 4로 변경)
그후 일전에 3으로 나눈 몫을 3으로 나눈 나머지를 구해 나아간다.
ex) 8 = 몫 : 2, 나머지 : 2 -> 2 몫 : 0, 나머지 : 2 ->22
3으로나눈 나머지가 0인 배수들은 나누고 몫에 -1 을 진행
ex) 9 = 몫 : 3, 나머지 : 0 (4)-> (9 / 3 - 1)2 몫 : 0, 나머지 : 2 ->42
package com.company;
public class Countryof124
{
public static void main(String[] args)
{
System.out.println(solution(11));
}
public static String solution(int n)
{
StringBuffer answer = new StringBuffer();
while (n > 0)
{
int remain = n % 3;
if (remain == 0)
{
answer.append(4);
n = n / 3 - 1;
}
else
{
answer.append(remain);
n = n / 3;
}
}
return answer.reverse().toString();
}
}
String 을 그냥 이어 붙이는 += 보다 StringBuffer 를 사용하여 붙이는게 빠르다!
'알고리즘 > JAVA' 카테고리의 다른 글
[JAVA] 프린터 - 프로그래머스 (0) | 2020.10.24 |
---|---|
[JAVA] 스킬트리 - 프로그래머 (0) | 2020.10.23 |
[JAVA] 소수찾기 - 프로그래머스 (0) | 2020.10.21 |
[JAVA] 3진법 뒤집기 - 프로그래머스 (0) | 2020.10.21 |
[JAVA] 콜라츠 추측 - 프로그래머스 (0) | 2020.10.21 |