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 |