Notepad++은 제가 많이 이용하는 편집기입니다. 대회 출제할 때에도 썼고, 검수할 때도 많이 썼습니다. 언어 편집기 기능도 있기 때문에, 컴파일러만 깔려 있으면 인텔리제이나 파이참이 없어도 쉽게 코딩할 수 있었기 때문입니다. 이 프로그램을 쓰면서 제가 많이 이용한 플러그인 중 하나는 Compare 였습니다.

 

 기본적으로 제공되지는 않으므로, 설치하시면 됩니다. 설치는 그렇게 복잡하지 않습니다. 플러그인 관리에서 Compare를 찾고, 설치하시면 됩니다. 그러면, 제가 이 플러그인을 언제 어떻게 썼는지 시나리오로 알아보겠습니다.

 


 가희야 거기서 자는 거 아니야 문제에서 제가 풀이 및 검수 코드로 acmicpc stack에 작성한 것들을 가지고 비교해 보겠습니다.

 

 이 코드는 맞습니다.

 

 

 그런데 이 코드가 자꾸 틀렸다고 그럽니다. 문제에서 요구한 답은, G에 의해서 P가 가려졌다면, 가희가 베개 위에서 자는 것을 빠르게 파악하는 것이였습니다. 16번째 줄을 보면, gh에 대해서 판단하고 있는데, 이는 gh가 베개 밑에서 자고 있으면 1을, 그렇지 않으면 0을 출력하는 것임을 알 수 있어요. 그러므로, 문제에서 요구한 상황은 아닙니다.

 

 이것은 코드가 극히 짧으므로 간단하지만, 코드가 길어지는 경우에는 어디가 틀렸는지 파악하기도 쉽지 않습니다. 그런 경우에 보조 도구로 이용하게 됩니다. 예를 들어, 검수진 분들의 코드가 비슷한 거 같은 데 어떤 건 왜 맞고, 어떤 건 왜 틀렸는지 빠르게 파악하기 위해 쓰면 좋을 겁니다. 실제로 저는 이 용도로 굉장히 많이 쓰는 편입니다.

 


 new1 탭에는 AC를 받는 코드, new2 탭에는 WA를 받는 코드를 넣어놓았습니다. 그리고 Compare의 compare를 눌러 보겠습니다.

 

 뭔가 여러 메뉴가 있는 거 같긴 하네요.

 

 눌러 보면, 뭔가 이상한 것들이 잔뜩 있는데요. !가 있는 줄이 있고, -가 있는 줄이 있습니다. 먼저 !은 new2와 비교했을 때 new1과 다른 것이 있다는 의미입니다. 그리고 -는 new2에는 없지만, new1에는 있는 것을 의미해요. 20 ~ 22번째 줄은 회색으로 표시되어 있는데요. 이는 new2에는 있는 줄이지만, new1에는 없는 줄을 의미합니다. new2를 보겠습니다.

 

 그러면, 11번째 줄에 j++){ 이 부분이 있음을 알 수 있어요.  new1에는 중괄호가 없었습니다. new2에는 11번째 줄에 중괄호가 있습니다. 그리고, 12번째 줄이 없습니다. 다음에 17번째 줄을 보니까, gh와 r1, c1이 다른 것을 알 수 있습니다. 나머지는 같은 걸 보아서는, 17번째 줄 때문에 틀렸다는 것을 알 수 있어요.

 

 

 실제로, 이 데이터에서 가희를 나타내는 문자인 G의 갯수를 세서 비교한 것은 틀리고, 베개 문자인 P의 갯수를 세서 비교한 것은 정답이 됩니다.

 


 이제, 몇 가지 옵션 중에 Ignore Spaces를 보겠습니다. 이는 Space와 같은 공백 문자들을 비교에서 제외합니다.

 

 예를 들어 new1에 gh = gh + (str[i][j] == 'G');가 적혀져 있는 문장이 있습니다.

 

 

 그리고 new2에는 gh = gh+(str[i][j] == 'G');가 적혀져 있는 문장이 있습니다. 공백이 하나 두개 더 들어가고 덜 들어가고 차이인데요. 이것을 잡지 않았음을 알 수 있어요.

 

 

 반면에 Ignore Space 옵션을 해제했을 때에는 13번째 줄과 14번째 줄에 !  표시가 뜨게 됩니다.

 

 다음에, 다른 줄을 찾기 위해서, 메뉴의 Next 버튼을 누르는 것도 많이 쓰곤 했습니다. 에를 들어 11번째 줄에 !이 들어 왔는데요. 이 위치에 현재 커서가 있어요. Next를 누르면 아래와 같이 17번째 줄에 커서가 위치해 있습니다.

 

 

 다음 연산도 상당히 많이 쓰니 익혀 두면 나쁘지 않습니다.

 

 그리고 NavBar는 전체적으로 어느 부분이 다른지 비교하기 위해서 쓰게 됩니다. 생각보다 파일 둘을 비교해야 할 일은 많으니, 이 플러그인을 알아두는 것도 도움이 많이 되실 듯 싶습니다.