2146번 - 다리 만들기
제 코드를 예를 들어서 간략하게 설명할게요
5
1 1 0 0 1
1 0 0 0 0
0 0 0 0 0
1 0 0 1 1
이렇게 입력을 받았으면
devide_field() 함수로
2 2 0 0 3
2 0 0 0 0
4 0 0 0 0
4 0 0 5 5
field가 이렇게 되고,
BFS의 시작점을 저장해놓는 큐인 store는
(0,1), (0,4), (1, 0), (3, 0), (4,0), (4,3), (4,4) 이렇게 됩니다.
그 때, 시작점으로 부터 땅 번호로 늘어가면서 BFS_count에는 다리의 길이를 하나씩 쌓습니다.
그러다가, 0이 아니고 자신의 땅 번호와 다른 땅 번호를 만나면, 만나는 땅끼리의 BFS_count를 더하여 결과값을 구했습니다.
위의 예에서는 field가 아래와 같이 됐을 때, 바로 return을 하여 답이 1이 나옵니다.
2 2 2 3 3
혹시나, 하나의 대륙만 존재할 때를 대비해서 return 0까지 추가했습니다.
100%에서 틀렸습니다 떠서 멘붕먹었습니다..
조언 부탁드립니다...ㅠ
댓글을 작성하려면 로그인해야 합니다.
mycool0905 5년 전
제 코드를 예를 들어서 간략하게 설명할게요
5
1 1 0 0 1
1 0 0 0 0
0 0 0 0 0
1 0 0 0 0
1 0 0 1 1
이렇게 입력을 받았으면
devide_field() 함수로
2 2 0 0 3
2 0 0 0 0
0 0 0 0 0
4 0 0 0 0
4 0 0 5 5
field가 이렇게 되고,
BFS의 시작점을 저장해놓는 큐인 store는
(0,1), (0,4), (1, 0), (3, 0), (4,0), (4,3), (4,4) 이렇게 됩니다.
그 때, 시작점으로 부터 땅 번호로 늘어가면서 BFS_count에는 다리의 길이를 하나씩 쌓습니다.
그러다가, 0이 아니고 자신의 땅 번호와 다른 땅 번호를 만나면, 만나는 땅끼리의 BFS_count를 더하여 결과값을 구했습니다.
위의 예에서는 field가 아래와 같이 됐을 때, 바로 return을 하여 답이 1이 나옵니다.
2 2 2 3 3
2 2 0 0 3
2 0 0 0 0
4 0 0 0 0
4 0 0 5 5
혹시나, 하나의 대륙만 존재할 때를 대비해서 return 0까지 추가했습니다.
100%에서 틀렸습니다 떠서 멘붕먹었습니다..
조언 부탁드립니다...ㅠ