컨트롤 제트
※풀이
1. s = s.split(' ') 코드는 주어진 문자열 s를 공백을 기준으로 분리하여 배열로 만듭니다. 이렇게 하면 s는 문자열 배열이 됩니다.
2. result라는 빈 배열을 선언합니다. 이 배열은 최종 결과를 저장할 배열입니다.
3. 반복문을 통해 s의 각 요소를 순회합니다. 반복문의 변수 i는 s의 각 요소를 차례대로 가리킵니다.
4. if(i === 'Z') 조건문은 현재 요소 i가 문자열 'Z'인지 확인합니다. 만약 그렇다면 result.pop()을 호출하여 result 배열에서 마지막 요소를 제거합니다. 이는 'Z'의 동작을 시뮬레이션하는 부분입니다.
5. else 블록은 i가 문자열 'Z'가 아닌 경우 실행됩니다. 이 경우, i를 숫자로 변환하여 result 배열에 추가합니다. +i는 i를 숫자로 변환하는 방법 중 하나입니다.
6. 반복문이 끝나면 result 배열에 모든 요소가 저장되어 있습니다. result.reduce((a, c) => a + c, 0)는 result 배열의 모든 요소를 더한 값을 계산합니다. reduce 함수는 배열 요소를 순회하면서 주어진 함수를 적용하여 단일 값으로 줄이는 역할을 합니다. 초기값으로 0을 설정하여 시작합니다. 그후 계산된 값이 반환됩니다.
ex1)
{
function solution(s) {
s = s.split(' ')
let result = [];
for (let i of s){
if(i === 'Z'){
result.pop()
} else {
result.push(+i)
}
}
return result.reduce((a, c) => a + c, 0)
}
console.log(solution("1 2 Z 3"));
//4
}
ex2)
{
function solution(s) {
s = s.split(' ')
let result = [];
for (let i of s){
if(i === 'Z'){
result.pop()
} else {
result.push(+i)
}
}
return result.reduce((a, c) => a + c, 0)
}
console.log(solution("10 20 30 40"));
//100
}
등수 매기기
※풀이
1. total 변수는 score 배열의 각 요소에 대해 첫 번째 요소와 두 번째 요소를 더한 값을 저장하는 배열입니다. score.map(v => v[0] + v[1]) 코드는 score 배열을 순회하면서 각 요소의 첫 번째 요소와 두 번째 요소를 더하여 새로운 배열을 생성합니다.
2. array 변수는 total 배열을 복사한 후, 내림차순으로 정렬한 배열입니다. total.slice()를 통해 total 배열을 복사하고, sort((a,b) => b - a)를 사용하여 내림차순으로 정렬합니다.
3. total.map((v) => array.indexOf(v) + 1) 코드는 total 배열의 각 요소에 대해 순위를 계산하여 새로운 배열을 생성합니다. 4. map 함수를 사용하여 total 배열을 순회하면서 각 요소 v의 인덱스를 array.indexOf(v)를 통해 찾고, 찾은 인덱스에 1을 더하여 순위로 변환합니다. 인덱스는 0부터 시작하므로 1을 더해 1부터 시작하는 순위로 변환한후 계산한값을 반환합니다.
ex1)
{
function solution(score) {
let total = score.map(v => v[0] + v[1])
let array = total.slice().sort((a,b) => b - a)
return total.map((v) => array.indexOf(v) + 1);
}
console.log(solution([[80, 70], [90, 50], [40, 70], [50, 80]]));
//[1, 2, 4, 3]
}
ex2)
{
function solution(score) {
let total = score.map(v => v[0] + v[1])
let array = total.slice().sort((a,b) => b - a)
return total.map((v) => array.indexOf(v) + 1);
}
console.log(solution([[80, 70], [70, 80], [30, 50], [90, 100], [100, 90], [100, 100], [10, 30]]));
//[4, 4, 6, 2, 2, 1, 7]
}