Javascript - 프로그래머스 17일차

이율곡·2023년 6월 27일

Programmers

목록 보기
17/44
post-thumbnail

17일차

17일차! 깜빡하고 있다가 후다닥 집중해서 풀었다. 오늘 문제는 그렇게 어려운 문제는 없었다. 코딩 기초 트레이닝에서 정답률이 75%보다 낮은 문제들은 귀찮아서 풀지 않은 게 큰 거 같다.

그래서 17일차는 후닥후닥 정리해보려 한다.


오늘의 문제

배열 만들기 4

정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk를 만드려고 합니다.
변수 i를 만들어 초기값을 0으로 설정한 후 i가 arr의 길이보다 작으면 다음 작업을 반복합니다.
만약 stk가 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다.
stk에 원소가 있고, stk의 마지막 원소가 arr[i]보다 작으면 arr[i]를 stk의 뒤에 추가하고 i에 1을 더합니다.
stk에 원소가 있는데 stk의 마지막 원소가 arr[i]보다 크거나 같으면 stk의 마지막 원소를 stk에서 제거합니다.
위 작업을 마친 후 만들어진 stk를 return 하는 solution 함수를 완성해 주세요.

예시

arrresult
[1, 4, 2, 5, 3][1, 2, 3]

예시 풀이

iarr[i]stk
01[]
14[1]
22[1, 4]
22[1]
35[1, 2]
43[1, 2, 5]
43[1, 2]
--[1, 2, 3]

접근방법

이 문제의 접근 방법은 조건문을 확실하게 파악하는 것이다. 조건만 확실하게 정의하면 어렵지 않은 문제다.

  1. 빈 배열 stk를 초기화.
  2. 반복 변수 i를 0으로 초기화.
  3. i가 arr의 길이보다 작을 때까지 아래 작업을 반복.
    1) 만약 stk가 빈 배열인 경우:
    arr[i]를 stk에 추가.
    i에 1을 더하기.
    2) stk에 원소가 있고, stk의 마지막 원소가 arr[i]보다 작은 경우:
    arr[i]를 stk의 뒤에 추가.
    i에 1을 더하기.
    3) stk에 원소가 있는데, stk의 마지막 원소가 arr[i]보다 크거나 같은 경우:
    stk의 마지막 원소를 stk에서 제거.
  4. 위 작업을 마친 후, 만들어진 stk를 반환.

풀이

function solution(arr) {
    var stk = [];
    let i = 0;
    
    while(i < arr.length) {
        if(stk.length === 0) {
            stk.push(arr[i])
            i++;
        } else {
            if(stk[stk.length-1] < arr[i]) {
                stk.push(arr[i]);
                i++;
            } else {
                stk.pop();
            }
        }
    }
    
    return stk;
}

정확히 접근방법에 따라 문제를 풀었다.


정리하기

17일차는 어려운 부분이 없었다!! 내가 조금 성장했을 수도..? 끝!

profile
음악을 좋아하는 사람이 음악을 만들 듯, 개발을 좋아하게 될 사람이 쓰는 개발이야기

1개의 댓글

comment-user-thumbnail
2023년 6월 28일

성장하지 이렇게 하는데!!!!! 잘하고있다 율곡크

답글 달기