반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 스프링부트
- 프로그래머스 #카카오 #IT #코딩테스트
- 파이썬
- C
- 프로그래머스
- Spring
- DPDK
- Python
- 캐시
- Kakao
- docker
- Elasticsearch
- 운영체제
- 코딩테스트
- IT
- 쿠버네티스
- 알고리즘
- springboot
- 엘라스틱서치
- Linux
- 개발자
- 도커
- programmers
- 스프링
- 자바
- 네트워크
- 카카오
- Java
- 백엔드
- 리눅스
Archives
- Today
- Total
저고데
[프로그래머스]이중순위큐 본문
728x90
반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42628
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해당 문제를 간략하게 설명하면 다음과 같다.
operation이라는 배열이 주어지는데, 총 세 가지의 종류가 있다.
"I 123" "D -1" "D 1"
"I 123"은 123이라는 숫자를 삽입하는 것이고, "D -1"은 삽입한 배열에서 최솟값을 제거, "D 1"은 삽입한 배열에서 최댓값을 제거하라는 뜻이다.
그리고 모든 작업을 마치고 남아있는 배열에서 최댓값과 최솟값을 반환해야하며, 그 값이 존재하지 않는 경우에는 0을 반환한다.
따라서 작성해야하는 코드의 순서는 다음과 같다.
1. 알파벳에 따라서 제거와 삽입을 구분해준다.
2. 최댓값과 최솟값을 선택하여 remove를 사용하여 삭제해준다.
필자가 작성한 코드는 다음과 같다.
def solution(operations):
answer = []
stack=[]
for i in operations:
if i[0]=='I': #1번 : "I"일 때를 구분하고 append를 사용하여 해당 숫자를 삽입한다.
stack.append(int(i[2:]))
else:
if i[2]=="-": #1번 : 이는 "D -1"일 때를 구분한 것이다.
if(len(stack)<=1): #만약 배열의 크기가 1보다 작거나 같다면 최댓값과 최솟값이 값으므로
stack.clear(). #최댓값과 최솟값을 구할 필요 없이 모두 제거해주는 clear를 사용한다.
else:
stack.remove(min(stack)) #2번 : 그렇지 않다면 min을 사용하여 최솟값을 찾아 삭제해준다.
else:
if(len(stack)<=1):
stack.clear()
else:
stack.remove(max(stack))
if(len(stack)==0):
maxv=0
minv=0
else:
maxv=max(stack)
minv=min(stack)
answer.append(maxv)
answer.append(minv)
return answer
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스]타겟 넘버 (0) | 2023.01.13 |
---|---|
[프로그래머스]오픈채팅방 (0) | 2023.01.13 |
[프로그래머스]프린터 (0) | 2023.01.12 |
[프로그래머스]기능개발 (0) | 2023.01.12 |
[프로그래머스]튜플 (0) | 2023.01.12 |