똥이

Algorithem/백준 PS with code

백준 #20040 - [G4] 사이클 게임 : 그래프사이클, 유니온파인드

https://www.acmicpc.net/problem/20040 (python3) 그래프의 대표 유형중 하나인 사이클 존재 유무 탐색 문제입니다. 그래프 사이클 탐색의 경우 유니온 파인드 알고리즘으로 해결할 수 있습니다. 유니온 파인드 이어진 점들을 하나의 그룹으로 표현하는 방식입니다. 가장 직관적인 접근으로는 그룹 A와 B가 합쳐지는 경우 이렇게 모든 점들을 탐색하면서 A 를 B 로 편입시키는 방법입니다. 다만 이 방법을 사용하게 되면 새로운 선이 하나 추가될때 마다 모든 점의 그룹 상태를 모두 확인하여 바꿔야하기에 점이 많아질수록 연산 부담이 커집니다. 이 연산을 획기적으로 줄이는 방식이 union find 가 되겠습니다. 핵심 아이디어는 각 점은 자신의 부모 노드만 저장하고 있고, 필요시마다 해..

Algorithem/백준 PS with code

백준 #19236 - [G2] 청소년 상어 : 구현, back tracking

(python3) 아이디어 까다로운 상어 시리즈의 청소년 버전입니다. 이 문제는 시뮬레이션의 조건이 많기 떄문에 코딩 과정에서 스텝이 꼬이지 않도록 기능을 잘 분리해서 접근해주는게 좋습니다. 저는 위치가 2차원 행렬로 표현되는 경우 x,y 보다 r,c 를 사용하는게 명료해서 더 선호합니다. 방향 역시 1~8 의 숫자로 문제에서 주어졌지만 배열로 접근할때의 편의성을 위해 0~7 로 변환하여 사용했습니다. 이런 디테일한 변수 설정들이 헷갈리지 않도록 메모하거나 체계를 잡아두는게 좋은 것 같습니다. 상어가 이동할 수 있는 모든 경우의 수를 탐색해야하고, 이전의 선택 뒤에 다음 선택지가 가지치듯 갈라지는게 반복되기 때문에 백트레킹을 사용하는게 좋습니다. 재귀를 활용해서 단순하게 구현이 가능합니다. 백트래킹은 트..

jamong5
'똥이' 태그의 글 목록