문제 1. 정수 내림차순으로 배치하기

function solution(n) {
let arrayN = n.toString().split('').map(Number)
let final = arrayN.sort((a , b)=> b - a );
let count = ''
for ( let i = 0 ; i < final.length ; i++){
count += final[i].toString()
}
return count*1
}
정수 n의 각 자릿수를 큰것부터 작은순으로 정렬한 새로운 정수를 리턴해야한다.
우선 정수자체에서는 정렬하는 법을 모르기에, 문자열로 바꾼뒤 배열로 만드는 방법을 사용했다.
그리고 배열을 sort 함수를 사용해 정렬시켰고, 그리고 반복문을 통해 count 에 문자열로 순서대로 반환시킨뒤
그 문자열에 *, /, - 를하면 자동형변환이 되기 때문에 return count에 *1을했다.
문제 2. 하샤드 수

function solution(x) {
let num = x.toString().split('')
count = 0
for(let i = 0 ; i < num.length ; i++){
count += Number(num[i])
}
return x % count === 0 ? true : false ;
}
우선 하샤드 수에 대해 알아야 한다. 임의의 정수가 각 자릿수의 합으로 나누어 떨어지는 수 를 하샤드 수라고 한다.
임의의 정수 x를 문자열로 바꾼뒤 split 함수를 통해 각 자릿수를 나누고
for문을 이용해서 각 자릿수의 정수를 더했다.
그리고 삼항연산자를 사용해 x / count 의 나머지 값이 0 이라면 true를 반환, 0이 아니라면 false를 반환하는 코드를 짰다.
문제 3. 두 정수 사이의 합

function solution(a, b) {
let arrayN = [a, b]
arrayN.sort((a, b ) => a - b)
count = 0;
for (let i = arrayN[0] ; i <= arrayN[1]; i++){
count += i
}
return count;
}
처음 문제를 풀땐 정렬을 안하고 그냥 for 문을 사용해서 했는데 그러면 정수 a 가 정수 b 보다 크면 반복문이 작동을 안하는 에러가 있었다,
그렇기 때문에 정수를 배열로 만든뒤 정렬하는 과정이 필요했고, for 문을 이용해
i의 값을 arrayN의 0번째 인덱스 즉 a, b 둘중 작은쪽을 주고 i의 최댓값은 a, b 중 큰 값을 준 뒤
count에 더하면 풀렸습니다.
'코딩테스트' 카테고리의 다른 글
| (javascript)제일 작은 수 제거하기, 가운데 글자 가져오기 (0) | 2024.01.17 |
|---|---|
| (javascript)음양더하기, 핸드폰 번호 가리기, 없는 숫자 더하기 (0) | 2024.01.16 |
| (javascript)콜라츠 추측, 서울에서 김서방 찾기, 나누어 떨어지는 숫자 (1) | 2024.01.15 |
| (Javascript) 자연수 뒤집어 배열로 만들기, 문자열을 정수로 바꾸기, 정수 제곱근 판별 (0) | 2024.01.11 |
| 약수의 합, 나머지가 1이되는 수 찾기, x만큼 간격이 있는 n개의 숫자 (0) | 2024.01.10 |