문제 링크: https://www.codetree.ai/frequent-problems/artistry/description
으... 푸는데 딱 2시간 걸렸다. 사실 구현 자체는 괜찮은 시간에 한 것 같은데, 중심부 반시계 회전하는 부분에서 뭔가 꼬이는 바람에 거기서만 디버깅을 거의 1시간 가까이 했던 것 같다.
BFS는 그룹을 형성하는 BFS(normal_bfs)와 인접한 그룹과의 변 개수를 세는 BFS(check_bfs) 2가지 사용했다. 다른 그룹을 만났을 때 어느 그룹인지를 판단하는 방식이 처음에는 잘 안 떠올랐는데(union-find나 dictionary를 써야하나 싶었다), 처음 BFS를 돌리면서 visited를 업데이트할 때 단순 True가 아닌 현재 그룹 번호로 업데이트하는 방식을 사용했다. 각 그룹 번호에 바로 그룹에 속하는 칸 개수, 그룹의 점수를 알 수 있도록 별도의 list(group_ele, group_score)를 파서 사용했다.
처음에는 첫 그룹 번호를 0으로 잡았다가 나중에 이걸 False로 처리해서... 무한루프 걸리는 일이 있었다. 시계방향 배열 회전 구현하는 부분도 살짝 헷갈렸는데, 얼른 익숙해지도록 하자...
'알고리즘 문제풀이 > 코드트리(삼성 기출)' 카테고리의 다른 글
연산자 배치하기(2017 하반기 오후 2번, 백준 14888 연산자 끼워넣기) (0) | 2022.10.08 |
---|---|
냉방 시스템(2021 하반기 오전 2번, 백준 23289 온풍기 안녕!) (0) | 2022.10.08 |
팩맨(2021 하반기 오후 1번, 백준 23290 마법사 상어와 복제) (0) | 2022.10.08 |
Sam의 피자학교(2021 하반기 오후 2번, 백준 23291 어항 정리) (0) | 2022.10.08 |
나무박멸(2022 상반기 오후 2번) (0) | 2022.10.07 |