본문 바로가기
코딩테스트

[백준] 3182 한동이는 공부가 하기 싫어! - python

by CuckooBird 2023. 1. 30.

백준 3182 한동이는 공부가 하기 싫어! python

https://www.acmicpc.net/problem/3182

 

3182번: 한동이는 공부가 하기 싫어!

H-ALGO 회원인 한동이는 공부하는것을 좋아하지 않는다. 하지만 약삭빠르게도 한동이는 공부도 하지 않으면서 어려운 시험을 통과하고 싶어한다. 그러던 와중 어느 날, 한동이의 동기가 한동이에

www.acmicpc.net


코드

맞았습니다가 뜬 코드입니다. - 메모리 30616KB | 시간 268ms | 코드 길이 543B

import sys
N = int(sys.stdin.readline().rstrip())
senior = [0]
for _ in range(N):
    senior.append(int(sys.stdin.readline().rstrip()))
trail_idx = [] # 전에 만났던 선배 번호 저장
Max = [] # 이동 횟수 저장
for n in range(1, N+1):
    cnt = 0
    first_idx = n # 처음 시작할 선배 저장 
    now_idx = n # 현재 선배 (처음 시작 선배부터 시작하므로 n)
    for i in range(N):
        trail_idx.append(now_idx) # 현재 선배를 전에 만났던 선배 인덱스에 저장
        now_idx = senior[now_idx] # 현재 선배가 알려주는 선배 now_idx에 일단 저장
        if now_idx in trail_idx: # 바뀐 줄 알았던 선배가 사실 나왔던 선배였음
            Max.append(cnt) # 몇번 돌았는지 저장
            break
        else:
            trail_idx.append(now_idx) # 처음 보는 선배면 trail_idx에 저장
            cnt += 1 # 횟수 ++
    trail_idx.clear() # 처음 시작 선배에 따라 새로운 시작이므로 리스트 클리어
print(Max.index(max(Max))+1) # 선배를 가장 많이 만날 수 있는 횟수 고르기 (0부터 시작하므로 1을 더해줌)

Search 🔍

  • 그래프 탐색
    - 깊이 우선 탐색 (DFS) 와 너비 우선 탐색 (BFS) 로 나뉩니다. 자세한 설명은 후에 알고리즘 설명으로 하겠습니다. (언제 할지는 모름..)

후기

공부하기 싫은 한동이를 보며 공부하기 싫어져서 전기장판위에 앉아서 코드를 짜는데 집중이 안 되더라고요

카페와서 다시 집중해서 풀었습니다 ㅎ. . . 

쓰면서 안건데, 또루트포스였네요 ㅋㅋ 또루트포스 중에서 가장 풀기 무난했습니다. 모르고 풀어서 그랬을지도..