https://www.acmicpc.net/problem/20920
1.설명
이번 문제에서 봐야할껀 sorted()관련 함수 였습니다. 파이썬에서 sort()함수는 오름차순으로 정렬해주는 함수입니다. 문자열 또한 오름차순으로 정렬이 됩니다.key 매개변수를 가지는 sort()함수는 key값을 기준으로 정렬되고 lambda식을 사용할 수 있습니다. lambda식은 익명함수를 지칭하는 것으로 key인자에 함수를 넘겨주면 우선순위를 정해서 구할 수 있습니다.
c = sorted(a, key = lambda x : x[0])
c = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
d = sorted(a, key = lambda x : x[1])
d = [(3, 0), (5, 1), (0, 1), (1, 2), (5, 2)]
또 비교할 아이템이 요소가 복수개일 경우, 튜플로 우선순위를 정해줄수 있고, -을 붙이면, 현재와 반대차순으로 정렬됩니다. 이번 문제에서는 자주 나오거나, 해당단어의 길이가 길어질수록 앞으로 정렬해야하기 때문에이를 활용해서 문제를 풀었습니다. x[0]은 단어, x[1]에는 단어의 개수가 할당되어 있습니다.
했는데 계속 틀렸다고 나오는겁니다.... 뭐지 싶어서 여러 블로그를 찾아본 결과 rstrip()을 활용하는 것을 보고 이게 무슨 함수인지 봤습니다.
https://codechacha.com/ko/python-string-strip/
위 게시글에서 확인할 수 있었는데, rstrip()함수는 인자로 전달된 문자를 string의 오른쪽에서 제거합니다. 이를 통해서 string에서 특정문자를 제거할 수 있습니다.이걸 활용해 공백을 제거할 수 있었습니다. 이걸 이제야 알다니... 이제부턴 string에서는 strip()함수를 통해 공백열을 제거해야겠습니다.
2.코드
import sys
input = sys.stdin.readline
N,M=map(int,input().rstrip().split())
words={}
for _ in range(N):
word=str(input()).rstrip()
if len(word)< M:
continue
else:
if word in words:
words[word]+=1
else:
words[word]=1
words=sorted(words.items(), key = lambda x : (-x[1], -len(x[0]), x[0]))
for i in words:
print(i[0])
'코딩test공부 > 백준python' 카테고리의 다른 글
2607.비슷한 단어 (0) | 2024.01.16 |
---|---|
2512.예산 (0) | 2024.01.11 |
13305.주유소 (1) | 2024.01.09 |
9017.크로스 컨트리 (1) | 2024.01.08 |
1244.스위치 끄고 켜기 (2) | 2024.01.04 |