프로그래머스 코딩테스트연습 레벨 0
수 조작하기 2
https://school.programmers.co.kr/learn/courses/30/lessons/181925
나의 풀이
function solution(numLog) {
var answer = '';
for(let i = 1; i < numLog.length; i++){
if(numLog[i] === numLog[i-1] + 1){
answer += 'w'
} else if(numLog[i] === numLog[i-1] - 1){
answer += 's'
} else if(numLog[i] === numLog[i-1] + 10){
answer += 'd'
} else if(numLog[i] === numLog[i-1] - 10){
answer += 'a'
}
}
return answer;
}
다른 사람의 풀이
function solution(numLog) {
const convert = {
'1': 'w', '-1': 's', '10': 'd', '-10': 'a'
};
return numLog.slice(1).map((v, i) => {
return convert[v - numLog[i]]
}).join('')
}
- 해당 풀이는 객체를 이용하여 문제를 풀이하여서 가져왔다.
const convert = {
'1': 'w', '-1': 's', '10': 'd', '-10': 'a'
};
- convert라는 객체는 키-값을 생성한 코드.
- 이 객체는 주어진 숫자에 따라 문자를 매핑하기 위해 사용된다. 예를 들어, 숫자 1은 문자 'w'로, 숫자 -1은 문자 's'로, 숫자 10은 문자 'd'로, 숫자 -10은 문자 'a'로 매핑된다.
return numLog.slice(1).map((v, i) => {
return convert[v - numLog[i]]
}).join('')
- numLog.slice(1)은 numLog 배열의 첫 번째 요소를 제외한 모든 요소를 선택한다. 즉, 두 번째 요소부터 끝까지의 요소들로 이루어진 새로운 배열을 반환한다.
- .map((v, i) => { ... })는 새로운 배열의 각 요소에 대해 함수를 적용하여 새로운 배열을 생성한다. v는 현재 요소의 값이고, i는 현재 요소의 인덱스이다.
- return convert[v - numLog[i]]는 convert 객체를 이용하여 숫자 간의 차이에 따라 매핑된 문자를 선택한다. 예를 들어, 현재 요소와 이전 요소의 차이가 1이면 'w'가 선택되고, 1이면 's'가 선택된다.
- .join('')은 생성된 문자열 배열을 빈 문자열로 구분하여 하나의 문자열로 합친다.
- 예) [2, 3, 4, 5, 6, 7, 8, 9, 10] 배열을 인자로 전달하면 결과적으로 'wwwwwwwd'라는 문자열이 반환된다.
'JS > 알고리즘(코테)' 카테고리의 다른 글
프로그래머스 코딩테스트 LV.0 조건 문자열, 코드 처리하기 (0) | 2023.05.31 |
---|---|
프로그래머스 LV.1 - 문자열 내 마음대로 정렬하기 (0) | 2023.05.26 |
프로그래머스 LV.0 - 진료순서 정하기, 가까운 수 (0) | 2023.05.26 |
프로그래머스 LV.0 - 배열 만들기2 (0) | 2023.05.23 |
최대공약수와 최소공배수(유클리드 호제법) (0) | 2023.05.20 |