Programmers - 124 나라의 숫자
💻 124 나라의 숫자
❓ 문제
https://programmers.co.kr/learn/courses/30/lessons/12899?language=javascript
✔️ 코드
function solution(n) {
let number = n;
let answer = "";
// number가 0일때 까지 반복
while (number > 0) {
// 맨 뒷 자리 숫자가 4인 경우는 3의 배수인 경우
if (number % 3 === 0) {
// 4 숫자를 추가
answer = "4" + answer;
// number를 3으로 나누고 1를 뺀다.
number = number / 3 - 1;
// 맨 뒷자리 숫자가 1인 경우는 3으로 나눈 나머지가 1인경우
} else if (number % 3 === 1) {
answer = "1" + answer;
// 3으로 나누면 나머지가 생기므로 버린다.
number = Math.floor(number / 3);
// 1인 경우가 아니라면 자동으로 2
} else {
answer = "2" + answer;
number = Math.floor(number / 3);
}
}
return answer;
}
❗️풀이과정
진법 문제로서 총 1, 2, 4의 자리수가 있다. 총 3개숫자로만 표현이되므로 3으로 나눠서 나머지가 1인경우 2인경우 0인경우 각각의 규칙성을 찾으면 된다.
- 나머지가 0인경우 : 끝자리가 4로 끝난다.
- 나머지가 1인경우 : 끝자리가 1로 끝난다.
- 그 외 나머지 : 나머지가 2인경우 : 끝자리가 2로 끝난다.
맨처음 나머지가 0인 경우에는 3² + 3¹ + 3⁰ 이런 형태로 모두 3의 배수이기 때문에 3으로 묶으면 3(3¹ + 3⁰ + 1) 이런형태가 되어 나머지가 1이 남게 되므로 -1 을 해준다. 문자열 앞자리가 4로 끝나게 되므로 붙여준다.
나머지가 1인경우에는 3으로 나눴을때 나머지가 남게 되는데 이때는 끝자리가 1로 끝나므로 문자열 앞자리에 1을 붙여준다.
그외는 2인 경우이므로 문자열 앞자리에 2를 붙여준다.
이러한 과정을 number가 0이 될때까지 반복해서 자리수를 모두 알아낸다.
배운점
Math.floor()
함수의 경우 안에 소수점을 버리는 기능을 한다.
Author And Source
이 문제에 관하여(Programmers - 124 나라의 숫자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@doodream/Programmers-124-나라의-숫자저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)