혼자 놀기의 달인
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 내 풀이
- 숫자를 key, 상자번호를 value로 하는 딕셔너리 생성
- 아무 숫자부터 가능한 bfs 돌면서 방문처리하고 한 묶음의 갯수세서 저장
- 앞에서 방문했던 상자는 다시 방문하지 않음
- 저장해둔 상자묶음의 갯수 중에 큰 것 2개의 곱
from collections import defaultdict,deque
def solution(cards):
answer = 0
n=len(cards)
cards_idx=defaultdict(int)
for idx,card in enumerate(cards):
cards_idx[card]=idx+1
result=[]
visited=[False for _ in range(n+1)]
for i in range(1,n+1):
if visited[i]:
result.append(0)
continue
queue=deque([i])
visited[i]=True
cnt=0
while queue:
cur=queue.popleft()
cnt+=1
nxt=cards_idx[cur]
if visited[nxt]:
break
visited[nxt]=True
queue.append(nxt)
result.append(cnt)
result.sort(reverse=True)
answer=result[0]*result[1]
return answer
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스][정렬] H-Index (0) | 2025.06.09 |
|---|---|
| [프로그래머스] 완전 범죄 (1) | 2025.06.01 |
| [프로그래머스][그리디][백트래킹] 광물 캐기 (8) | 2025.05.28 |
| [프로그래머스][BFS] 다단계 칫솔 판매 (1) | 2025.05.27 |
| [프로그래머스][플로이드-워셜] 순위 (0) | 2025.05.22 |