나라를 하나씩 옮겨가며 경계가 열리는지 검사를 하셨던데, 그렇게하려면 우선 나라가 하나 돌 때 마다 플래그 값을 초기화 해주고 그에 따른 결과 또한 한번씩 더해줘야 하는게 맞다는 생각입니다.
코드를 돌려본 결과 divider, 즉 경계가 열리는 나라의 갯수가 2개 이상인경우 플래그가 참이 되어야하는데,
플래그 값이 한번 참이 되니까 그 다음부턴 디바이더에 상관없이 계속 참의 값을 갖더라구요.
해당 입출력의 문제만 찾아보느라 맞는 코드인지는 사실 잘 모르겠습니다.
아래와 같이 고치시면 질문자님이 말씀하신 예제는 출력 2가 나옵니다.
bbangssi91 5년 전
문제를 풀다가 생각을 미처하지 못한 부분이 있어서 질문드립니다.
코드 순서는 다음과 같습니다.
-> 인구이동이 하나라도 가능한 경우면 true를 리턴, 아니면 false를 리턴합니다.
3. 가능한 경우 BFS를 사용하여 L과 R 사이의 범위에 있는 경우에만 visited 배열을 true로 만들고 확장합니다.
4. 확장을 마치면(문을 전부 열었으면), 해당index의 배열에 sum/인구수 로 나누어서 배열을 갱신한다.
5. 다시 2번으로 돌아가서 true를 리턴하면 2->3->4 를 반복하고 false를 리턴하면 while 루프를 빠져나온다.
여기서 제가 질문드릴 부분은 2번에 해당하는 부분의 조건처리입니다.
다음 테스트케이스의 경우에서 제가 짠 코드의 예시는 다음과 같습니다.
49번 line의 for문에서 (0,0)부터 인덱스에서 확장을 하여T T T
T T T
F T F 의 결과가 나왔습니다.
문제는 sum/인구수를 갱신하고 난 이후, 아직 for문이 전부 돌아간것이 아니기때문에
20 20 20
20 20 20
40 22 10 의 결과가 나오게 되고 (2,2) 에서 다시 확장을 하여
F F F
F F T
F F T 의 결과가 나오게됩니다.
결과적으로 while 루프는 1번만 돈것이 되기 때문에 결과 값 출력이 2가 나와야 하는데 1이 나오게 됩니다..
문제점이 무엇인진 알겠는데 코드를 어떻게 수정해야될지 도저히 감이 잡히질 않습니다
제가 짠 코드에서 어떻게 수정을 해야 문제를 개선할 수 있을까요ㅜㅜ 도움부탁드립니다