Where who wants to meet someone

배열 만들기 4 본문

728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/181918

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 답안 / 다른 사람들의 답안

import Foundation

func solution(_ arr:[Int]) -> [Int] {
    var stk = [Int]()

    var i = 0

    while i < arr.count {
        if !stk.isEmpty && stk[stk.count - 1] >= arr[i] {
            stk.removeLast()
        } else {
            stk.append(arr[i])
            i += 1
        }
    }

    return stk
}

- 빈 배열 stk, 0을 초기값으로 갖는 변수 i를 생성한 후, while문을 통해 arr의 수보다 작을 때까지 반복하여 다음 구문을 수행했다.

- 처음에는 stk.isEmpty일 때, arr[i]보다 작을 때, arr[i]와 같거나 클 때 3가지 경우로 케이스 처리를 했는데, 앞의 두 경우는 수행하는 코드가 동일하여 중복으로 작성할 필요가 없을 것 같았다.

- 하여 다른 작업을 수행하는 3번째 경우(비어있지 않고, arr[i]보다 같거나 클 때)이거나 아니거나 2가지로 압축하여 작업을 수행했다.

 

import Foundation

func solution(_ arr:[Int]) -> [Int] {
    var stk = [Int](), i = 0
    while i < arr.count {
        if stk.isEmpty { stk.append(arr[i]); i += 1 }
        else {
            if stk.last! < arr[i] { stk.append(arr[i]); i += 1 }
            else { stk.removeLast() }
        }
    }
    return stk
}

- 다른 사람들은 수정 전 처음 아이디어대로 코드를 구성하였음을 알 수 있었다.

 

점수: +5

'프로그래머스 알고리즘 문제 기록 > 코딩 기초 트레이닝' 카테고리의 다른 글

주사위 게임 3  (0) 2024.01.17
간단한 논리 연산  (0) 2024.01.16
콜라츠 수열 만들기  (0) 2024.01.16
카운트 업  (0) 2024.01.16
배열 만들기 2  (0) 2024.01.16