1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class oneTwoFour { public String solution(int n) { StringBuilder answer = new StringBuilder(); int []countryNumber={4,1,2}; change124(n, answer, countryNumber); return answer.reverse().toString();//뒤에다 추가해서 reverse()했다. } private void change124(int n, StringBuilder answer, int[] countryNumber) { int check; while (n>0){ check=n%3;//나머지 n=n/3;//몫 if (check==0){//3진수인데 3이 없다. n--; } answer.append(countryNumber[check]); } } } | cs |
oneTwoFour.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import org.junit.Test; import static org.junit.Assert.*; public class oneTwoFourTest { oneTwoFour o=new oneTwoFour(); @Test public void 테스트_결과() { assertEquals("1",o.solution(1)); assertEquals("2",o.solution(2)); assertEquals("4",o.solution(3)); assertEquals("11",o.solution(4)); assertEquals("12",o.solution(5)); } } | cs |
oneTwoFourTest.java
-문제 설명
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
124 나라에는 자연수만 존재합니다.
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
10진법 |
124나라 |
10진법 |
124나라 |
1 |
1 |
6 |
14 |
2 |
2 |
7 |
21 |
3 |
4 |
8 |
22 |
4 |
11 |
9 |
24 |
5 |
12 |
10 |
41 |
자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.
-제한사항
n은 500,000,000이하의 자연수 입니다.
3진수인 것과 3n+1이라는 규칙은 쉽게 찾아냈는데 그걸 코드로 프로그래밍하는게 약간 시간이 걸렸다.
정답에 3진수를 추가해줄때 +=방식을 썼는데 인텔리제이에서 경고를 보내서 answer를 StringBuilder로 바꿔서 append()메소드를 써서 3진수를 추가했다.
'프로그래머스 > JAVA' 카테고리의 다른 글
[스택/큐] 타워 (0) | 2018.11.02 |
---|---|
[우선순위 큐] 더 맵게 (0) | 2018.10.24 |
[해시] 위장 (0) | 2018.10.12 |
[해시] 전화번호 목록 (0) | 2018.10.10 |
[정렬] H-Index (0) | 2018.10.05 |