프로그래머스 Day - 14

ᵁ-ᴷᴺᴼᵂᴺ·2023년 6월 8일
post-thumbnail

1. 홀수 vs 짝수

목표 : 홀수번째 합과 짝수번째합 중 더 큰것을 반환

//입력
[4, 2, 6, 1, 7, 6]
//출력(4+6+7 = 17)
17
function solution(num_list) {
    let odd = 0
    let even = 0
    for(let i = 0; i<num_list.length; i++){
        if(i%2 == 0) odd+=num_list[i]
        else even += num_list[i]
    }
    return Math.max(odd, even)
}
  • 홀수와 짝수를 담을 변수를 각각 oddeven으로 선언하고 값은 0으로 설정한다.
  • num_list의 길이만큼 반복문을 수행한다.
  • 배열의 첫 시작의 인덱스는 0이지만, 홀수번째 이기 때문에, i2로 나누었을 때 0이면 홀수로 보고 oddnum_list[i]를 더해준다.
  • 짝수번째의 숫자는 else단에서 처리를 하여 evennum_list[i]를 더해준다.
  • Math.max()를 사용하여 더 큰 값을 반환해준다

2. 5명씩

목표 : 다섯명 씩 그룹을 나누었을 때 첫 번째에 있는 사람들을 반환

//입력
["nami", "ahri", "jayce", "garen", "ivern", "vex", "jinx"]
//출력
["nami", "vex"]
function solution(names) {
    return names.filter((_, i) => !(i % 5))
}
  • filter()를 사용하여 인덱스번호를 5로 나누었을 때, 나누어 떨어지는 경우만 true를 반환하기 때문에 결과적으로 filter()의 조건은 5의 배수인 인덱스만 남겨놓고, 배열로 반환한다.

3. 할 일 목록

목표 : boolean 배열에서 false인 인덱스를 이용하여 다른 배열에서 골라 출력

//입력 (todo_list,  finished)
["problemsolving", "practiceguitar", "swim", "studygraph"],  [true, false, true, false]
//출력
["practiceguitar", "studygraph"]
function solution(todo_list, finished) {
    return todo_list.filter((_,i) => !finished[i]);
}
  • filter()를 사용하여 finished의 인덱스를 순회하면서 falsetruenot시킨 인덱스를 todo_list에서 찾아 배열의 형태로 반환한다.

4. n보다 커질 때까지 더하기

목표 : 배열에서 순차적으로 더하면서 n보다 커진 상황의 합을 구하기

//입력(numbers,  n)
[34, 5, 71, 29, 100, 34],  123
//출력
139
function solution(numbers, n) {
    let sum = 0
    for(let i = 0; i<numbers.length; i++){
        sum += numbers[i]
        if(sum > n) return sum
    }
}
  • 반환할 합을 저장할 sum을 0으로 선언하고, numvers배열의 길이만큼 반복한다.
  • sumnumbers[i]를 더하면서, 더한 결과가 n보다 큰지 확인 후 크다면 sum을 반환한다.

5. 수열과 구간 쿼리 1

목표 : 배열에서 일정 구간에 +1 하기

//입력(arr,  queries)
[0, 1, 2, 3, 4]	[[0, 1],[1, 2],[2, 3]]	
//출력
[1, 3, 4, 4, 4]
function solution(arr, queries) {
    for(let [s, e] of queries){
        for(let i = s; i<=e; i++){
            arr[i] += 1
        }
    }
    return arr
}
  • queries의 길이만큼 반복하는데, queries의 원소들을 [s, e]로 선언하여 시작할 인덱스 번호인s와 종료할 인덱스 번호인 e를 저장해준다.
  • 이중포문으로 안쪽 포문에서는 is부터 e(포함)까지 반복한다
  • arr[i]+1씩 해주고 포문이 모두 끝나면 arr을 반환한다.
profile
ΔIM ΩΠ ҒULLSTΔCҜ

0개의 댓글