[출처] 프로그래머스 - 카카오 예선 - 카카오 프렌즈 컬러링북
문제 자체를 이해하는데 시간이 조금 걸렸다.
예제 입출력의 문제를 통하여 문제에 대한 설명을 하면, 예제 입출력을 행렬로 표현하면 다음과 같다.
1 1 1 0
1 2 2 0
1 0 0 1
0 0 0 1
0 0 0 3
0 0 0 3
이렇게 표현될 때, 숫자별로 나뉘어진 영역을 찾는것이다.
좌측 상단이 (0, 0) 좌표라 가정할 때,
1로 이루어진 [ (0, 0) (1, 0) (2, 0) (0, 1) (0, 2) ] 의 5칸짜리 영역
2로 이루어진 [ (1, 1) (1, 2) ] 의 2칸짜리 영역
1로 이루어진 [ (2, 3) (3, 3) ] 의 2칸짜리 영역
3으로 이루어진 [ (4, 3) (5, 3) ] 의 2칸짜리 영역
위처럼 총 4개의 영역으로 이루어져 있으며, 가장 큰 영역은 5칸 짜리 영역이므로 답은 [4, 5] 가 되는 것이다.
나는 재귀함수를 사용하여 현재 타일 기준으로 상하좌우를 돌려버리는 코드를 작성하여,
자신을 포함한 인접한 타일의 같은 갯수를 반환하는 것으로 코드를 작성하였다.
코드를 작성하는 문제보다 코드를 작성하고 제출을 하는데 테스트는 성공인데 자꾸 틀렸다고 나온 경우가 있었다.
왜그러지 왜그러지 하다가 이유를 찾아보니... 상하좌우 전부를 테스트하지 않으면 정확도에서 틀렸다고 검증을 하였다....
처음에는 좌측 상단부터 시작하기 때문에 우측과 하단만 검사를 했는데, 좌측과 상단을 추가하고 나니 제출이 되었다.....
버그가 날 꼬투리조차 잡히지 않게 알고리즘을 짜야되나부다...
'프로그래밍 끄적 > 알고리즘 (Algorithm)' 카테고리의 다른 글
KMP (Knuth Morris Partt Algorithm) - 문자열 탐색 (0) | 2023.07.06 |
---|