일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- level1
- Matrix Factorization
- java
- androidstudio
- 대학원일기
- 대학원
- 자바
- build
- 내휴학생활중의아주큰일
- D3
- level3
- Python
- SQL
- level4
- BFS
- 컨트리뷰톤
- 프로그래머스
- 컴퓨터비전
- 안드로이드스튜디오
- MSBuild
- Github
- py
- 어렵다
- WebOS
- 다시풀기
- 파이썬
- SWEA
- LEVEL2
- git
- 휴학
Archives
- Today
- Total
bit가 눈 앞에서 왔다갔다
Py) 프로그래머스 43164 여행경로 본문
3회차 - 마지막이 좀 찝찝한데 다시 보자
2회차 - 건강한 멘탈로 다시 풀자
https://programmers.co.kr/learn/courses/30/lessons/43164
음..그래. 정말 열심히 풀었는데 테스트케이스 2개랑 3번만 맞췄다.
음ㅁ.. 고민 엄청하다가 제출하면 맞출 줄 알았는데 아니었다-
도대체 뭘 생각못한걸까..?
하지만 예전엔 접근도 잘 못하고 정말 싫어하던 bfs dfs를 열심히 푼 나 자신 칭찬해
아래는 틀린코드 (아까우니까 올리기,,)
from collections import deque
def solution(tickets):
answer = []
stack = deque([])
visited = [False for i in range(len(tickets))]
stack.append(tickets[0][0]) # icn으로 시작합니다
while stack:
top = stack.pop()
answer.append(top)
for ticket in range(len(tickets)):
if visited[ticket] == True or tickets[ticket][0] != top:
continue
else:
if len(stack): # stack이 비지 않았다면 하나 pop해서 확인
tmp = stack.pop()
if tickets[ticket][1] > tmp:
put = tmp
else:
put = tickets[ticket][1]
idx = tickets.index([tickets[ticket][0], tmp])
# print(idx)
visited[idx] = False
visited[ticket] = True
stack.append(put)
else:
visited[ticket] = True
stack.append(tickets[ticket][1])
return answer
print(solution([["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]]))
# print(solution([["ICN", "JFK"], ["HND", "IAD"], ["JFK", "HND"]]))
참고 중인 코드
def solution(tickets):
answer = []
dest = dict()
for ticket in tickets:
if ticket[0] in dest:
dest[ticket[0]].append(ticket[1])
else:
dest[ticket[0]] = [ticket[1]] # []
for i in dest:
dest[i].sort(reverse=True) # 각 리스트 역순
stack = ['ICN']
while stack:
top = stack[-1]
if top not in dest or len(dest[top]) == 0:
answer.append(top)
stack.pop()
else: # 도착지가 있는 애였을 때
stack.append(dest[top][-1]) # 리스트 맨뒤
dest[top].pop()
answer.reverse()
return answer
print(solution([["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]]))
김예 다 뿌순다
반응형
'Algorithm > Prob' 카테고리의 다른 글
Py) 프로그래머스 42884 단속카메라 (0) | 2022.02.17 |
---|---|
Py) 프로그래머스 42628 이중우선순위큐 (0) | 2022.02.15 |
Py) 프로그래머스 42861 섬 연결하기 (0) | 2022.02.11 |
Py) 프로그래머스 43236 징검다리 (0) | 2022.02.10 |
Py) 프로그래머스 42579 (0) | 2022.02.09 |
Comments