ljo950924   4년 전

BFS함수를 통해 같은 문자를 갖고 있는 인접한 그룹의 총 크기를 반환합니다.

크기가 4이상이면 그 그룹을 모두 '.'으로 변경하여 제거된 것으로 만들어줍니다.

oc 변수를 통해 제거가 발생했을 경우에는 총 몇번의 연쇄가 일어났는지를 기록하는 c 변수의 값을 1 증가시켜줍니다.

만약 연쇄가 일어나지 않았다면 c 값을 출력하고 프로그램을 종료합니다.

연쇄가 발생했을 경우에는 열 단위로 밑에서부터 확인을 하며 남은 문자들을 재배치해줍니다.

마지막으로 같은 문자를 갖고 있는 그룹을 표현해주는 uni배열을 다시 초기화 합니다.

결과로 틀렸습니다가 나오는데 어디가 잘못된걸까요..

ghjo92   4년 전

다른곳도 틀린곳이 더 있을런지는 모르겠지만 일단 재배치쪽에 else문이 틀린거같네요.

for(int k=i; k>=0; k--) => for(int k=i; k>=count;k--) 가 맞으실거같고

{ arr[k+count][j] = arr[k][j]; } => { arr[k][j] = arr[k-count][j];  } 가 맞을거같네요


뿌요를 밑으로 내렸을때 위쪽에 새로 빈공간을 넣는 구문을 추가하셔야 될거 같습니다.

for(int k = count -1; k >= 0; k--){arr[k][j] = '.';} <=추가


밑에 구문은 삭제하셔야될거같아요. 찍어보시면 알겁니다.

i+=count; <=삭제

일단 재배치쪽이 가장 틀리기 쉬운곳이라 거기만 봤는데 다른곳도 틀리셨을수 있습니다.

단계별로 디버그 포인트 잡고 arr를 찍어보세요.

ljo950924   4년 전

설명 감사합니다!!

저렇게 바꿔봐도 안되네요..

아마 다른 곳에 문제가 있는 것 같습니다;;;

다시 처음부터 해볼께요!!ㅎㅎ

댓글을 작성하려면 로그인해야 합니다.