-
[Swift] 이준 우선 순위 큐 프로그래머스 코딩테스트개발/Swift 2022. 1. 13. 14:09
어떻게 풀어야 할지 고민도 없이 문제를 읽고 바로 해결법을 찾았던 문제였다.
들어오는 값은 [”명령어 값”] 이므로 “ “ 을 기준으로 나눠 배열로 바꾼다.
그러면 [”명령어”,”값”] 인 형태가 될것이고 조건문을 통해 명령어가 “I”면 값이 들어있는 배열에 값을 추가하고
그렇지 않으면 삭제이므로 값을 보고 “1” 이면 값이 들어있는 배열을 정렬후 가장 큰값을 제거하고
“1” 이 아니면 작은 값을 제거하면된다.
이후에 값이 들어있는 배열이 비어있는경우 [0,0]을 리턴
값이 있으면 최대 최소값을 리턴해주면 된다.
var valueArray = [Int]() for index in 0..<operations.count{ let value = operations[index].split(separator: " ") }
value 는 이제 명령어와 값으로 나뉜 배열이 될것이다.
if(value[0] == "I"){ valueArray.append(Int(value[1])!) }else{ //D if(!valueArray.isEmpty){ if(value[1] == "1"){ valueArray.sort(by: <) valueArray.popLast() }else{ valueArray.sort(by: >) valueArray.popLast() } } }
I 인경우 값을 배열에 넣어줬다. 나중에 어차피 Int 타입으로 리턴을해야하고 정렬을 해야하니
Int 로 파싱하여 넣어준다.
else문은 삭제할 경우이다. 1인경우 최대값이므로 오름차순 정렬후 마지막을 빼주고
반대는 반대로 하면된다.
if(valueArray.isEmpty){ return [0,0] } valueArray.sort(by: <) let min = valueArray[0] let max = valueArray.popLast() return [max!,min]
이제 리턴은 두가지 경우로 나뉜다 valueArray 가 비어있으면 [0.0]을
아니면 최대값 최소값을 넣은 배열을 리턴해주면 된다.
전체 코드
func solution(_ operations:[String]) -> [Int] { var valueArray = [Int]() for index in 0..<operations.count{ let value = operations[index].split(separator: " ") if(value[0] == "I"){ valueArray.append(Int(value[1])!) }else{ if(!valueArray.isEmpty){ if(value[1] == "1"){ valueArray.sort(by: <) valueArray.popLast() }else{ valueArray.sort(by: >) valueArray.popLast() } } } } if(valueArray.isEmpty){ return [0,0] } valueArray.sort(by: <) let min = valueArray[0] let max = valueArray.popLast() return [max!,min] }
'개발 > Swift' 카테고리의 다른 글
[Swift] 소수 찾기 코딩테스트 프로그래머스 (0) 2022.01.25 [Swift] 가장 큰 수 코딩테스트 프로그래머스 (0) 2022.01.17 [Swift] 다리를 지나는 트럭 프로그래머스 코딩테스트 (0) 2022.01.09 [Swift] 프린터 프로그래머스 코딩테스트 (0) 2022.01.06 [Swift] 기능개발 코딩테스트 프로그래머스 (0) 2022.01.04