나를 기록하다
article thumbnail
반응형

백준(baekjoon) 1181 단어 정렬(sort)

1. 1. 첫번째 풀이(실패)

이 문제는 처음에 쉬워보여서 바로 시도하였으나, 런타임에러로 실패하였다.

 

처음에 제출한 코드는 다음과 같다.

<python />
import sys input = sys.stdin.readLine n = int(input()) lst = [] for i in range(n): lst.append(input().strip()) lst = list(set(lst)) lst.sort() lst.sort(key = len) for i in lst: print(i)

 

1.1. 실패 원인

sys.stdin.readLine() 함수를 사용하여 입력을 받을 때, 전체 입력을 한 번에 처리하기 때문. 입력이 많은 경우 처리 시간이 길어질 수 있다.

시간을 줄이기 위해서는 입력을 한 줄씩 처리해야 한다.

 

 

2. 2. 두번째 코드(성공)

<python />
import sys # 입력 함수를 sys.stdin.readline으로 설정 input = sys.stdin.readline n = int(input()) lst = set() # 한 줄씩 입력을 받아서 집합에 추가 for i in range(n): word = input().strip() lst.add(word) # 집합을 정렬한 후 길이순으로 정렬하여 리스트로 변환 lst = sorted(sorted(lst), key=len) # 리스트의 원소를 한 줄씩 출력 for word in lst: print(word)

 

2.1. sorted와 sort의 차이

2.1.1. sorted()

  • sorted() 함수는 원본 리스트를 변경하지 않고, 정렬된 새로운 리스트 반환
  • 원본 리스트는 그대로 유지, 정렬된 결과를 새로운 리스트로 받아 사용
  • sorted() 함수는 key 매개변수를 사용하여 정렬 기준을 지정할 수 있으며, 기본적으로 오름차순으로 정렬

2.1.2. sort()

  • sort() 메서드는 원본 리스트를 정렬하여 변경한다. 원본 리스트 자체가 정렬되므로 반환값은 없다.
  • 따라서, sort() 메서드를 호출한 후에는 정렬된 리스트를 그대로 사용
  • sort() 메서드도 key 매개변수를 사용할 수 있으며, 기본적으로 오름차순으로 정렬
<python />
numbers = [3, 1, 4, 2, 5] # sorted() 함수 사용 sorted_numbers = sorted(numbers) print(sorted_numbers) # 출력: [1, 2, 3, 4, 5] print(numbers) # 출력: [3, 1, 4, 2, 5] (원본 리스트는 변경되지 않음) # sort() 메서드 사용 numbers.sort() print(numbers) # 출력: [1, 2, 3, 4, 5] (원본 리스트가 정렬됨)

이처럼 sorted 함수는 정렬된 새로운 리스트 반환 / sort 메서드는 원본 리스트를 변경

 

기본적인 문제인데 구동시간을 생각해야 한다는 것을 배울 수 있었던 문제였다.

반응형
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!