wnsrl4067   2년 전

대표적인 반례들은 몇 개 해봤는데, 다 잘 나와서 제출을 했는데 계속 틀렸다고 나옵니다.

어느 부분이 틀렸는지 모르겠습니다. 

v_chk 배열에, 단지번호를 붙여서, 단지 번호를 세어주는 형식으로 했습니다.

wizardrabbit   2년 전

안녕하세요? 반례 드립니다:

preview
입력:
5
11000
00000
00111
00000
10000

정답:
3
1
2
3

출력:
3
2
3
1

반례를 보시면 아시겠지만... 단지 크기와 개수 모두 제대로 동작하고 있습니다. 다만 정렬이 안 된채로 결과가 나올 뿐입니다. 왜냐하면 해당 코드에서는 실제로 정렬이 수행되고 있지 않기 때문입니다.

파이썬의 대표적인 정렬 함수는 sort()와 sorted()가 있습니다.

● sort()의 경우 arr.sort()와 같이 사용하며, 배열을 직접 정렬하여 값을 업데이트합니다. 그렇기 때문에 sort()를 통해 정렬을 할 경우 원본 배열이 정렬되어 값이 영구적으로 바뀌게 됩니다.

● sorted()의 경우 newArr = sorted(arr)와 같이 사용하며, 배열을 정렬한 결과물을 리턴합니다. 그렇기 때문에 sorted(arr)에는 정렬한 배열이 담기게 되고, 이를 새로운 변수에 저장하는 형식으로 사용할 수 있습니다. sorted() 를 통해 정렬을 할 경우 원본 배열에는 영향을 주지 않으며 다른 변수에 정렬한 결과를 저장할 수 있습니다.

질문자님은 sorted()를 사용하셨으나 sorted()의 결과를 저장하고 있는 변수가 없기 때문에 결과적으로는 코드에 아무런 영향도 주지 않게 됩니다. sort(), sorted()를 이용해 문제를 해결하는 방법을 각각 코드에 첨부했으니 참고하시기 바랍니다.

wnsrl4067   2년 전

헉... 감사합니다! sorted의 쓰임을 제대로 인식하지 못하고 있었군요 ! 감사합니다.. 논리가 틀렸다고 생각이 되어서 그런쪽은 생각을 안해본게 화근이였네요.

감사합니다! :)

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