티스토리 뷰

반응형

Using Language : Java Using Tool : IntelliJ


  • 프로그래머스 문제 소개

< 124나라의 숫자 >

문제 설명

124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
124 나라에는 자연수만 존재합니다 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.

제한 조건

  • n은 500,000,000이하의 자연수 입니다.

예시

10진법	124 나라	10진법	124 나라
1	      1	        6	      14
2	      2	        7	      21
3	      4	        8	      22
4	      11        9	      24
5	      12	10	      41

의사코드

  1. 124나라는 3진법 처럼 1,2,4 총 3개의 숫자만으로 이루어진 나라이므로, 주어진 값을 3으로 나누어준다.
  2. 값을 3으로 나누었을때 나머지가 0이 나오면 나누어 떨어지는 수지만 124나라에서 0을 사용할 수 없으므로 나머지 0을 4로 바꾸어준다.
  3. 0을 4로 바꾸어줄때마다 몫에서 -1을 해준다.

reverse함수를 사용하기 위해서 StringBuilder를 이용해보았다!


<Solution12.java>

public class Solution12 {
	// 124 나라의 숫자
	 public String solution(int n) {
		 
		 String answer = "";
	      int a = 0;
	      int b = 0;
	      
	      while(n>0){
	          a=n/3;
	          b=n%3;
		      
	          if(b==0){
	              a=a-1;
	              b=4;
	          }
	          answer+=String.valueOf(b);

	          n=a;
	      }
	      StringBuilder sb = new StringBuilder(answer);
	      answer=sb.reverse().toString();
		return answer;
	  }
}


<Solution12Test.java>

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class Solution12Test {
	@Test
	public void 결과(){

        Solution12 solution = new Solution12();
        
        assertEquals( "1", solution.solution(1));
        assertEquals( "2",  solution.solution(2));
        assertEquals( "4",  solution.solution(3));
	}
}


github에서 문제 확인하기

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
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
글 보관함