Notice
Recent Posts
Recent Comments
Link
투케이2K
29. (TWOK/ALGORITHM) [Java] 124 나라의 숫자 - 진법 , 규칙 값 치환 실시 본문
[환경 설정 및 설명]
언 어 : Java
설 명 : 124 나라의 숫자 - 진법 , 규칙 값 치환 실시
[소스 코드]
package ex;
public class MainActivity2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("[Program Start]");
System.out.println("");
/**
* [124 나라의 숫자]
* 1. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다
* 2. 124 나라에는 자연수만 존재하며, 모든 수를 표현할 때 1, 2, 4만 사용합니다
* 3. 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return하세요
* 4. (10) (124)
* 1 1
* 2 2
* 3 4
* 4 11
* 5 12
* 6 14
* 7 21
* 8 22
* 9 24
* 10 41
* 11 42
* 12 44
* 13 111
* 14 112
* 15 114
* 16 121
* 5. 프로그래머스 사이트 : https://programmers.co.kr/learn/courses/30/lessons/12899
* */
// 초기 변수 선언 실시
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
// 결과 확인 메소드 호출 실시 - 반복문을 돌면서 모든 값 확인 실시
for (int i=0; i<arr.length; i++) {
System.out.println("결과 : " + solution(arr[i]));
System.out.println("");
}
}// 메인 종료
public static String solution(int n) {
// 결과를 반환할 변수 선언 실시
String result = "";
// 인풋으로 들어온 데이터 확인 실시
System.out.println("input : " + n);
// 로직 처리 실시
/**
* [세부 설명]
* 1. 124 나라의 숫자 표시 규칙을 보면 >> 순차적으로 1 2 4 출력 > 1부터 다시 1 2 4 출력 > 2부터 다시 1 2 4 .. 규칙입니다
* 2. 124 나라는 3자리 숫자로 판단을 실시합니다 (3의 값 사용)
* 3. 인풋으로 들어온 데이터 / 3 >> 반복문을 수행할 값 계산 실시 (3으로 나누어 떨어질 경우 -1 값을 수행합니다)
* - 10 진수 1 / 3 >> 0
* - 10 진수 4 / 3 >> 1
* - 10 진수 7 / 3 >> 2
*
* - 10 진수 2 / 3 >> 0
* - 10 진수 5 / 3 >> 1
* - 10 진수 8 / 3 >> 2
*
* - 10 진수 3 / 3 >> 1 - 1 = 0
* - 10 진수 6 / 3 >> 2 - 1 = 1
* - 10 진수 9 / 9 >> 3 - 1 = 2
*
* 4. 인풋으로 들어온 데이터 % 3 >> 나머지 값으로 삽입될 데이터 판단 합니다 (3으로 나누어 떨어지는 경우 4로 치환)
* - 10 진수 1 % 3 >> 1
* - 10 진수 4 % 3 >> 1
* - 10 진수 7 % 3 >> 1
*
* - 10 진수 2 % 3 >> 2
* - 10 진수 5 % 3 >> 2
* - 10 진수 8 % 3 >> 2
*
* - 10 진수 3 % 3 >> 4
* - 10 진수 6 % 3 >> 4
* - 10 진수 9 % 3 >> 4
* */
int ans = n; // 인풋으로 들어온 데이터 삽입 (ex : 5) / (ex : 6)
while(ans > 0){ // while 반복문을 돌면서 확인 실시
// ex : 5) 1회전 : 5 % 3 = 2
// ex : 5) 2회전 : 1 % 3 = 1
// ex : 6) 1회전 : 6 % 3 = 0
// ex : 6) 2회전 : 1 % 3 = 1
if(ans % 3 == 0) { // 여기에서 3으로 나눠떨어진 경우 4값을 대입합니다
// ex : 6) 1회전 : 4 삽입
result = "4" + result;
ans --; // 값 감소
}
else if(ans % 3 == 1) {
// ex : 5) 2회전 : 1 삽입
// ex : 6) 2회전 : 1 삽입
result = "1" + result;
}
else {
// ex : 5) 1회전 : 2 삽입
result = "2" + result;
}
// ex : 5) 1회전 : 5 / 3 = 1
// ex : 5) 2회전 : 1 / 3 = 0
// ex : 6) 1회전 : 5 / 3 = 1
// ex : 6) 2회전 : 1 / 3 = 0
ans = ans / 3;
// ex : 5) 1회전 결과 : 2
// ex : 5) 2회전 결과 : 1 2
// ex : 6) 1회전 결과 : 4
// ex : 6) 2회전 결과 : 1 4
System.out.println("while : " + result);
}
// 결과 반환 실시
return result;
}
}// 클래스 종료
[참고 사이트]
반응형
'투케이2K 알고리즘' 카테고리의 다른 글
Comments