[백준] 1181.단어 정렬

jeongjeong2·2023년 6월 18일
0

For coding test

목록 보기
50/59

문제 바로가기

문제 풀이

단어 길이와 단어를 함께 list에 넣은 후 key값에 따라 정렬 순서를 기재하여 정렬한다.
for문의 range를 N이 아닌 수치로 지정하고, 공통되는 값을 제거해주지 않아서 오답 과정을 거침

정답 코드

"""
https://www.acmicpc.net/problem/1181
"""
N = int(input())
l = []
for _ in range(N):
    word = input()
    if [len(word),word] not in l:
        l.append([len(word),word])

l.sort(key = lambda x:(x[0], x[1]))

for i in l:
    print(i[1])

추가적인 개념 (optional)

sort함수 사용법
sort(), sorting, sorted()를 매번 헷갈려하는데 이에 대해 정확히 정리해보겠다.
1. sort()
- 리스트 자체를 변경하여 정렬한다.
- 원본 리스트를 직접 수정하며, 정렬된 결과 반환은 따로 없다.
- 기본적으로 오름차순으로 정렬되며 key, reverse를 사용하여 정렬 기준 or 순서를 지정할 수 있다.
2. sorted()
- 새로운 정렬된 리스트를 반환한다. 원본 리스트는 변경되지 않는다.
- 마찬가지로 key와 reverse를 사용하여 정렬 기준과 순서를 지정할 수 있다.
3. sorting
- python의 내장함수가 아니고, 제공되지 않는다...^^

# 예시 코드
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5]
# sort() 메서드를 사용하여 원본 리스트를 정렬
my_list.sort()
print(my_list)  # 출력: [1, 1, 2, 3, 4, 5, 5, 6, 9]
# sort() 메서드를 사용하여 내림차순으로 정렬
my_list.sort(reverse=True)
print(my_list)  # 출력: [9, 6, 5, 5, 4, 3, 2, 1, 1]
# sorted() 함수를 사용하여 새로운 정렬된 리스트 반환
new_list = sorted(my_list)
print(new_list)  # 출력: [1, 1, 2, 3, 4, 5, 5, 6, 9]
# 이 때는 my_list는 변경되지 않는다.
print(my_list) # 출력: [3, 1, 4, 1, 5, 9, 2, 6, 5]
# sorted() 함수를 사용하여 내림차순으로 정렬된 리스트 반환
new_list = sorted(my_list, reverse=True)
print(new_list)  # 출력: [9, 6, 5, 5, 4, 3, 2, 1, 1]

0개의 댓글