python의 set은 기본적으로 unordered set이기 때문에, 우선 set으로 만들고 정렬하셔야 할 것 같습니다.
그리고
for i in range(len(a)):
print a[i],
보다는
for i in a:
print i,
가 더 낫지 않을까 싶네요.
10867번 - 중복 빼고 정렬하기
python의 set은 기본적으로 unordered set이기 때문에, 우선 set으로 만들고 정렬하셔야 할 것 같습니다.
그리고
for i in range(len(a)):
print a[i],
보다는
for i in a:
print i,
가 더 낫지 않을까 싶네요.
n=input()
a=map(int,raw_input().split())
a=list(set(a))
a.sort()
for i in a:
print i,
이렇게 말씀하신대로 a=list(set(a))와 a.sort() 자리만 바꾸니 되네요!
근데 제가 한거랑 말씀해주신거랑 어떻게 다른거에요!? 잘 이해가 안되네요!
순서 바꾼 걸 말씀하시는 건가요? 아니면 for문 말씀하시는 건가요?
순서 바꾼거에 대한 질문입니다 ㅎ
파이썬의 set은 탐색을 O(1)에 하기 위해 해쉬맵을 응용한 자료구조를 사용합니다. (파이썬 dict에서 value가 없고 key만 있는 모양새입니다.)
그러다보니 set으로 만드는 과정에서 원래 자료의 순서가 바뀌게 되어, 중복을 제거하고자 정렬하고 set으로 만들면 정렬한 의미가 없어집니다.
그러므로 우선 중복을 제거하고, set에 대해서 정렬을 해주어야 합니다.
답변 감사드립니다.
아직 초보인 저에게는 쉽지 않군요.
혹시 실례지만 python 어떻게 공부하셨는지 질문드려도 될까요?
음 codacademy에서 문법 같은 거 배운 다음
문제 풀어보면서 다른 분들의 코드도 보고, 소위 말하는 pythonic한 방법으로 짤 수는 없는 지 검색해보는 식으로 했습니다.
일례로, python sort no duplicate 이라고 검색하면 http://stackoverflow.com/questions/479897/how-to-r... 에서
a = sorted(set(a))라는 답을 얻을 수 있습니다. 작성하신 코드와 비교하면 list로 굳이 형변환을 하지 않아도 되는 장점이 있죠. (내부적으로는 list를 만드는지 잘 모르겠네요)
답변 감사합니다.
여기 백준에 약간 아쉬운점은, 사람들이 답안을 공개하지 않아서 다른사람들의 코드를 보는것에 어려움이 있는 것 같습니다.
문제를 풀고나면 공개설정을 해놓은 코드에 한해서는 확인할 수 있습니다. 맞은 사람이나 숏코딩에 들어가보세요.
댓글을 작성하려면 로그인해야 합니다.
shockboy90 6년 전
어디가 틀렸는지 잘 모르겠네요ㅠㅠ
고수님들 도와주세요!