본문 바로가기

알고리즘 문제풀이/코드트리(삼성 기출)

예술성(2022 상반기 오전 2번)

문제 링크: https://www.codetree.ai/frequent-problems/artistry/description

 

코드트리

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

으... 푸는데 딱 2시간 걸렸다. 사실 구현 자체는 괜찮은 시간에 한 것 같은데, 중심부 반시계 회전하는 부분에서 뭔가 꼬이는 바람에 거기서만 디버깅을 거의 1시간 가까이 했던 것 같다.

 

BFS는 그룹을 형성하는 BFS(normal_bfs)와 인접한 그룹과의 변 개수를 세는 BFS(check_bfs) 2가지 사용했다. 다른 그룹을 만났을 때 어느 그룹인지를 판단하는 방식이 처음에는 잘 안 떠올랐는데(union-find나 dictionary를 써야하나 싶었다), 처음 BFS를 돌리면서 visited를 업데이트할 때 단순 True가 아닌 현재 그룹 번호로 업데이트하는 방식을 사용했다. 각 그룹 번호에 바로 그룹에 속하는 칸 개수, 그룹의 점수를 알 수 있도록 별도의 list(group_ele, group_score)를 파서 사용했다.

 

처음에는 첫 그룹 번호를 0으로 잡았다가 나중에 이걸 False로 처리해서... 무한루프 걸리는 일이 있었다. 시계방향 배열 회전 구현하는 부분도 살짝 헷갈렸는데, 얼른 익숙해지도록 하자...