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 | 29 | 30 | 31 |
Tags
- l-value참조자
- 네트워크 결합
- LAN의 분류
- C언어 덱
- 논리 연산
- 주기억장치
- C언어 계산기 프로그램
- 프로그래머스 배열만들기4
- 입출력 관리자
- 알고리즘 조건
- auto 키워드
- 원형 연결 구조 연결된 큐
- 괄호 검사 프로그램
- const화
- 범위 기반 for문
- C언어 스택 연산
- getline()함수
- 회전 및 자리 이동 연산
- 운영체제 기능
- 값/참조/주소에 의한 전달
- string유형
- 프로그래머스 푸드 파이트 대회
- 백준 파이썬
- c언어 괄호검사
- 유형 변환
- r-value참조자
- const l-value참조자
- 문자형 배열
- 문제해결 단계
- IPv4 주소체계
Archives
- Today
- Total
chyam
[프로그래머스 Lv2,python]- 프로세스 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(pri, location):
len_p=len(pri)
li=[a for a in range(len_p)] # 순서 인덱스 저장
comp=0 # 비교할 인덱스 저장
if(len_p==1): # 길이 1이면 바로 리턴
return 1
while(1):
sort_pri=sorted(pri,reverse=True) # 역순으로 정렬한것
if sort_pri==pri: # 이것과 같으면 종료
break
comp+=1
if comp>=len_p: # 기준이 길이 이상이면 다시 1로 바꿔줌
comp=1
if (pri[0]<pri[comp]): # 숫자가 기준보다 큰게 있으면
li.append(li[0]) # 빼서 뒤에 추가함
li=li[1:]
pri.append(pri[0])
pri=pri[1:]
comp=0 # 다시 초기화
return li.index(location)+1
처음에 내 코드는 2개 빼고 다 시간초과가 떠서 수정해야했다.
아래는 수정해서 통과한 코드이다.
def solution(pri, location):
queue = [(priority, idx) for idx, priority in enumerate(pri)] # [우선순위, 순서인덱스] 형태로 저장함
num=0 # 최종적으로 몇번째인지
k=0 # 제거하거나 추가를 알수있는 값
while(len(queue)>0): # 큐의 길이가 0보다 클때동안
tmp=queue[0] # 기준 큐
for i in queue[1:]: # 나머지큐
if tmp[0]<i[0]: # 기준의 우선순위가 더 낮으면
queue.append(queue.pop(0)) # 제거하고 추가
k=1 # 바꼈다는걸 알려줌
break
else:
k=0
if(k==0): # 안바꼈을때는 첫번째 큐의 우선순위가 가장높다는것
queue.pop(0) # 제거해줌
num+=1
if location==tmp[1]: # 찾는 location과 같으면
return num # 몇번째인지
아래는 다른분의 풀이이다. 먼저 처음 큐를 제거해주고 난 뒤
any라는걸 사용하였는데 이것은 괄호 안의 값 중 하나라도 True가 있으면 실행되는 것이다.
어짜피 기준보다 크던 작던 큐를 제거해줘야해서 미리 제거해주는 것은 좋은 것 같다.
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):
queue.append(cur)
else:
answer += 1
if cur[0] == location:
return answer
'프로그래머스 > LV2' 카테고리의 다른 글
[프로그래머스 Lv2,python]- 롤케이크 자르기 (0) | 2025.01.16 |
---|---|
[프로그래머스 Lv2,python]- 타겟 넘버 (1) | 2025.01.15 |
[프로그래머스 Lv2,python]- 전화번호 목록 (0) | 2025.01.11 |
[프로그래머스 Lv2, python]- H-index (0) | 2025.01.09 |
[프로그래머스 Lv2, python]- 행렬의 곱셈 (0) | 2025.01.08 |