-
[💕 프로그래머스 Python] 프린터Algorithm/1일 1코테 2020. 10. 25. 18:50반응형
프로그래머스 연습문제 2단계
🖨프린터🖨
문제 및 문제 설명
programmers.co.kr/learn/courses/30/lessons/42587
내가 쓴 답
def solution(priorities, location): p = priorities #편의를 위해 p로 재정의 answer = [] # 1차 words = [] # 2차 for i, v in enumerate(p): # 인덱스가 필요하기 때문에 index와 함께 값을 answer에 append answer.append([i,v]) while answer: paper = answer.pop(0) #answer의 첫번째 값을 꺼내서 if len(answer) == 0: # pop 했는데 0이면 밑에 for문이 안돌아가서 따로 append words.append(paper) for i in range(len(answer)): if paper[1] < answer[i][1]: #만약 answer 안에 더 큰 값이 있으면 answer.append(paper) # 맨 뒤로 다시 append break elif i+1 == len(answer): # 아니면 끝까지 돌렸는데도 break가 안됐으면 words에 append words.append(paper) # (더 큰 값이 없다는 뜻이므로) for i in range(len(words)): # words에서 location 값을 찾아서 위치 return (인덱스 값보다 +1) if words[i][0] == location: return i+1
ㅎㅎ 코드 완전 더럽
다른사람 코드
def solution(priorities, location): queue = [(i,p) for i,p in enumerate(priorities)] # 인덱스와 함께 append answer = 0 while True: cur = queue.pop(0) # 맨 처음 값을 뽑되 if any(cur[1] < q[1] for q in queue): # cur보다 더 큰 값이 하나라도 있으면 queue.append(cur) # 다시 append else: # 아니면 없다는 뜻이므로 answer += 1 # answer에 하나 + (내가 찾는 값에 하나씩 가까워진다고 생각하면 됨) if cur[0] == location: return answer
* any 사용예시
any(letter == 't' for letter in 'monty')
def solution(p, l): ans = 0 m = max(p) while True: v = p.pop(0) if m == v: ans += 1 if l == 0: break else: l -= 1 m = max(p) else: p.append(v) if l == 0: l = len(p)-1 else: l -= 1 return ans
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[💕 LeetCode Python] 704. Binary Search (0) 2020.10.26 [🤷♀️ 프로그래머스 Python] 기능개발 (0) 2020.10.25 [💕 프로그래머스 Python] 주식가격 (0) 2020.10.24 [🤷♀️ 프로그래머스 Python] 위장 (0) 2020.10.23 [💕 프로그래머스 Python] 전화번호 목록 (0) 2020.10.21