https://programmers.co.kr/learn/courses/30/lessons/42628
이 문제는 입력되는 명령어를 하나씩 읽어와 명령어의 동작대로 처리한다면 쉽게 풀 수 있는 문제입니다.
최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제합니다.라는 조건이 있어서 다음과 같이 처리했습니다.
# 최대, 최소인 값이 여러개인 경우에도 remove()는 하나의 원소만 삭제합니다.
answer.remove(max(answer))
answer.remove(min(answer))
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
def solution(operations):
answer = []
for command in operations:
# 명령어를 공백을 기준으로 분리 ex) "D -1" -> "D", "-1"
oper, num = command.split(" ")
num = int(num) # string -> integer 변환
if oper == "I": # Insert 명령인 경우 리스트에 추가
answer.append(num)
elif oper == "D" and num == 1 and answer: # D 1 명령어인 경우 리스트의 최대값 삭제
answer.remove(max(answer))
elif oper == "D" and num == -1 and answer: # D -1 명령어인 경우 리스트의 최솟값 삭제
answer.remove(min(answer))
if not answer: # 리스트에 아무 값이 없는 경우 answer = [0, 0]
answer = [0, 0]
else: # 리스트에 값이 있는 경우 answer = [최대값, 최솟값]
answer = [max(answer), min(answer)]
return answer
|
cs |
'About > Algorithm' 카테고리의 다른 글
[Programmers] 거리두기 확인하기 (Python 풀이) (0) | 2022.06.04 |
---|---|
[Programmers] 기능개발 (Python 풀이) (2) | 2022.06.02 |
[Programmers] 빛의 경로 사이클 (Python 풀이) (2) | 2022.06.02 |
[Programmers] 입국심사 (Python 풀이) (0) | 2022.06.02 |
[Programmers] 디스크 컨트롤러 (Python 풀이) (0) | 2022.06.02 |