배열 자르기
https://school.programmers.co.kr/learn/courses/30/lessons/120833
function solution(numbers, num1, num2) {
let answer = [];
let cnt = 0;
// num1부터 num2까지 numbers 배열의 값을 answer 배열에 넣어준다.
for(let i = num1; i <= num2; i++) {
answer[cnt] = numbers[i];
cnt++;
}
return answer;
}
splice를 활용해서 풀 수도 있다.
function solution(numbers, num1, num2) {
return numbers.splice(num1, num2-num1+1);
}
이 함수는 배열 **numbers**를 수정하고 해당 일부를 반환하는 역할을 합니다. 여기서 splice 메서드는 배열을 수정하고 삭제된 요소를 새로운 배열로 반환합니다.
- numbers: 처리할 배열
- num1: 시작 인덱스
- num2: 종료 인덱스
splice 메서드는 첫 번째 매개변수로 전달된 인덱스(num1)부터 두 번째 매개변수로 전달된 갯수(num2 - num1 + 1)만큼의 요소를 배열에서 제거하고, 이를 새로운 배열로 반환합니다.
따라서 solution 함수는 주어진 배열 numbers에서 num1부터 num2까지의 부분 배열을 반환합니다. 주의할 점은 이 함수가 원래 배열을 수정하고, 반환값은 삭제된 부분 배열이 됩니다.
외계행성의 나이
https://school.programmers.co.kr/learn/courses/30/lessons/120834
function solution(age) {
// age를 문자열로 변경
age_string = age.toString();
answer = '';
// 문자열의 한 글자를 다시 숫자로 바꾸고 그 숫자에 97을 더해준다.
// 예시: 1에 97을 더해주면 98이 되고, b의 아스키코드 값은 98이므로
// fromCharCode를 이용하여 98(아스키코드 값)을 다시 문자열로 바꿔주면
// 결과적으로는 1 -> b가 된다!
for(let i = 0; i < age_string.length; i++) {
answer += String.fromCharCode(Number(age_string[i]) + 97);
}
return answer;
}
진료순서 정하기
https://school.programmers.co.kr/learn/courses/30/lessons/120835
function solution(emergency) {
// 딕셔너리 생성
let dict = {};
// emergency가 [3, 76, 24]였다면
// dict[3] = 3;
// dict[76] = 2;
// dict[24] = 1; 이된다.
for (let i = 0; i < emergency.length; i++) {
dict[emergency[i]] = emergency.length - i;
}
// 딕셔너리의 key 값을 기준으로 오름차순 정렬
let sortedDict = Object.fromEntries(
// 딕셔너리의 키-값 쌍을 배열로 변환하고, 키를 기준으로 오름차순 정렬
Object.entries(dict).sort(([a], [b]) => a - b)
);
let answer = [];
// 정렬된 딕셔너리의 값들을 배열에 저장
let values = Object.values(sortedDict);
for (let i = 0; i < values.length; i++) {
answer[i] = values[i];
}
return answer;
}
다른 사람이 푼 더 좋은 풀이
function solution(emergency) {
let sorted = emergency.slice().sort((a,b)=>b-a);
return emergency.map(v=>sorted.indexOf(v)+1);
}
주어진 JavaScript 함수는 다음과 같은 동작을 수행합니다:
- emergency.slice(): emergency 배열의 복사본을 만듭니다.
- .sort((a, b) => b - a): 복사본을 내림차순으로 정렬합니다.
- emergency.map(v => sorted.indexOf(v) + 1): 원래 배열 emergency의 각 요소에 대해 정렬된 배열 sorted에서의 인덱스를 찾아 1을 더합니다.
예를 들어, emergency 배열이 [3, 76, 24]라면:
- sorted는 [76, 24, 3]이 됩니다.
- emergency.map(v => sorted.indexOf(v) + 1)은 각 요소에 대해 정렬된 배열에서의 인덱스를 찾아 1을 더한 결과인 [3, 2, 1]을 반환합니다.
이 함수는 원래 배열의 각 요소가 정렬된 배열에서 몇 번째로 큰지를 나타내는 새로운 배열을 반환합니다.
순서쌍의 개수
https://school.programmers.co.kr/learn/courses/30/lessons/120836
function solution(n) {
let cnt = 0;
// n을 어떤 수로 나눴을 때 나머지가 0이면 카운트를 1씩 더해준다.
for(let i = 1; i <= n; i++) {
if(n % i == 0){
cnt++;
}
}
return cnt;
}
이렇게 풀 수도 있다.
function solution(n) {
return Array(n).fill(1).map((v,idx) => v + idx).filter(v => n % v === 0).length
}
- Array(n).fill(1): 길이가 n이고 값이 1인 배열을 생성합니다.
- .map((v, idx) => v + idx): 각 요소에 대해 현재 요소의 값과 인덱스를 더한 값을 반환하는 새로운 배열을 생성합니다. 이로써 배열은 [1, 2, 3, ..., n]이 됩니다.
- .filter(v => n % v === 0): 배열에서 n의 약수인 요소들만 남깁니다.
- .length: 약수인 요소들의 개수를 반환합니다.
따라서 이 함수는 주어진 숫자 n의 약수의 개수를 반환합니다.
'Programmers(JavaScript)' 카테고리의 다른 글
[프로그래머스 자바스크립트] '폰켓몬' 풀어보기 (2) | 2024.07.16 |
---|---|
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 9,10 풀어보기 (0) | 2024.02.14 |
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 6,7 풀어보기 (1) | 2024.02.13 |
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 4,5 풀어보기 (1) | 2024.02.10 |
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 1,2,3 풀어보기 (1) | 2024.02.10 |