Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 데이터 분석
- 데이터분석
- 삼성 SDS
- 캐글
- 브라이틱스 서포터즈
- 삼성 SDS Brigthics
- 직원 이직여부
- 삼성SDS Brigthics
- Brightics Studio
- 영상제작기
- 모델링
- Brigthics Studio
- 혼공학습단
- 삼성SDS Brightics
- 혼공머신러닝딥러닝
- 팀 분석
- Brigthics
- 추천시스템
- Brigthics를 이용한 분석
- 혼공머신
- 직원 이직률
- 노코드AI
- 삼성SDS
- Brightics
- 개인 의료비 예측
- 포스코 청년
- 브라이틱스
- Brightics를 이용한 분석
- 혼공
- 포스코 아카데미
Archives
- Today
- Total
데이터사이언스 기록기📚
[프로그래머스] Level 2_프린터(스택/큐) 본문
문제 유형
스택/큐
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
주의해야할 점
- 한 번 프린트 할 때마다, 남아있는 리스트 안의 최대값을 다시 찾아야 한다.
- 한 번 프린트 할 때마다, 남아있는 리스트 안의 최대값 기준으로 다시 정렬해주어야 한다.
- 남아있는 리스트의 크기가 갱신되는지 확인해봐야한다.
나의 문제 풀이
1차 시도(20.0)
from collections import deque
def solution(priorities, location):
max_num = max(priorities)
max_num_index = priorities.index(max_num)
priorities = list(enumerate(priorities))
for i in range(len(priorities)):
if max_num == priorities[0][1] :
break
else:
priorities.append(priorities.pop(0))
for i in range(len(priorities)):
if priorities[i][0] == location:
return i+1
2차 시도(50.0)
# 한 번 프린트 될 때마다 위치 조정해야 함
def solution(priorities, location):
answer = 0
max_num = max(priorities)
max_num_index = priorities.index(max_num)
priorities = list(enumerate(priorities))
# 하나 프린트 되면 다시 재정렬하기
while True:
for i in range(len(priorities)):
if max_num == priorities[0][1] :
break
else:
priorities.append(priorities.pop(0))
if priorities[0][0] == location:
answer += 1
return answer
else:
priorities.pop(0)
answer += 1
3차 시도(통과)
- enumerate 사용하여 인덱스도 같이 저장 -> location 찾기 편하게하기 위함
- while문에서 max_num 재정의, 리스트 재정렬, location과 인덱스 동일한지 확인
def solution(priorities, location):
answer = 0
max_num = max(priorities)
priorities = list(enumerate(priorities))
# 하나 프린트 되면 다시 재정렬하기
while True:
# max_num 재정의
for i in range(len(priorities)):
if i == 0:
max_num = priorities[0][1]
else:
if max_num < priorities[i][1]:
max_num = priorities[i][1]
# 리스트 재정렬
for _ in range(len(priorities)):
if max_num == priorities[0][1] :
break
else:
priorities.append(priorities.pop(0))
# location이랑 인덱스 같은 경우, 값 하나 더한 후 리턴
# 아닌경우 값 하나 더하기
if priorities[0][0] == location:
answer += 1
return answer
else:
priorities.pop(0)
answer += 1
다른사람들의 풀이
1) any 이용
[python] 파이썬 all, any 함수 정리 및 예제
안녕하세요. BlockDMask 입니다. 예약해 둔 글이 다 떨어져서 다시 글을 써봅니다. 한동안 글을 쌓아놔서 개인 프로젝트를 많이 진행할 수 있었는데, 아쉽습니다. 오늘은 파이썬의 내장함수중에 all
blockdmask.tistory.com
def solution(priorities, location):
queue = [(i,p) for i,p in enumerate(priorities)]
answer = 0
while True:
cur = queue.pop(0) # 맨 앞 요소는 출력됨
# 대소비교하여 작은 값이면 다시 넣기
if any(cur[1] < q[1] for q in queue): # 안에 있는 요소들(q[1])과 출력된 요소 비교
queue.append(cur)
else:
# 출력된 요소 하나 더하기
answer += 1
# 위치 확인
if cur[0] == location:
return answer
2)
def solution(priorities, location):
answer = 0
search, c = sorted(priorities, reverse=True), 0
while True:
for i, priority in enumerate(priorities):
s = search[c]
if priority == s:
c += 1
answer += 1
if i == location:
break
else:
continue
break
return answer
리뷰
- 문제 제대로 이해하고 시작하기
- 인덱스, 값 둘 다 필요하면 enumerate 사용
파이썬의 enumerate() 내장 함수로 for 루프 돌리기
Engineering Blog by Dale Seo
www.daleseo.com
Deque에 대한 추가 내용
[파이썬/Python] Collections - Deque
들어가며 코딩테스트에 응시할 때 빠르게 찾아볼 수 있도록 따로 정리한 내용입니다. 공부하시기에는 빈약한 내용일 수 있음을 미리 알려드립니다. 공식 문서를 참고할 때에는 대부분의 기업이
mong9data.tistory.com
728x90
'Coding Test > 프로그래머스(Python)' 카테고리의 다른 글
[프로그래머스] Level 2_올바른 괄호(스택/큐) (0) | 2022.09.08 |
---|---|
[프로그래머스] Level 2_주식가격(스택/큐) (1) | 2022.09.08 |
[프로그래머스] Level2_기능개발(스택/큐) (0) | 2022.09.02 |
[프로그래머스] Level 1_실패율 (0) | 2022.08.16 |
[프로그래머스] Level 1_폰켓몬 (0) | 2022.07.17 |
Comments