본문 바로가기
코딩test공부/백준python

20920.영단어 암기는 괴로워

by 왕방개 2024. 1. 10.

https://www.acmicpc.net/problem/20920

 

20920번: 영단어 암기는 괴로워

첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단

www.acmicpc.net

 

 

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/

 

Python - String strip(), rstrip(), lstrip() 사용 방법 및 예제

Python에서 strip() 함수를 이용하면 문자열의 쓸모 없는 부분을 자를 수 있습니다. Python은 lstrip(), rstrip(), strip()을 제공합니다. Java 등의 다른 언어들도 strip()을 제공하며, 기능은 모두 비슷합니다.

codechacha.com

위 게시글에서 확인할 수 있었는데, 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