본문 바로가기

알고리즘/백준 문제 풀이

[Python] 5637번 가장 긴 단어

728x90

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

 

5637번: 가장 긴 단어

단어는 알파벳(a-z, A-Z)과 하이픈(-)으로만 이루어져 있다. 단어와 다른 문자(마침표, 숫자, 심볼, 등등등...)로 이루어진 글이 주어졌을 때, 가장 긴 단어를 구하는 프로그램을 작성하시오. Apple의

www.acmicpc.net


 

22/09/14

 

 

그룹 채점 현황에 있는 무작위 문제를 풀었다. 어렵지 않은 실버 문제였다. 다만, 정규표현식을 사용하여 문제를 해결하지는 않았다.


 

문제 접근 방식:

 

 

태그랑은 조금 다르게 그냥 구현했는데, 일단 E-N-D가 나올 때까지 반복 입력받으므로 while문을 사용했다.

 

단어들을 모아놓는 words리스트를 먼저 선언했다.

 

이후 입력 받을 때마다 그 줄을 공백으로 분리하여 리스트로 만들었다.

 

그 리스트의 요소(즉, 단어가 될 수 있는 것들)를 꺼내고, word라는 빈 문자열을 선언했다.

 

그 요소(단어가 될 수 있는 것)를 반복문을 사용해 문자 하나하나를 보면서 소문자, 대문자, 하이픈이라면 word에 붙여주고, 아니면 안 붙였다.

 

요소를 다 돌았으면, word를 위에서 말한 words리스트에 추가해주었다.

 

이후 words리스트에서 길이를 기준으로 최대가 되는 원소를 소문자로 출력해주었다.


아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.

더보기
# 5637번 가장 긴 단어
# 문자열
import sys
input = sys.stdin.readline

words = []

while True:
    S = input().rstrip().split(' ')
    if S[-1] == 'E-N-D':
        break
    for maybe_word in S:
        word = ''
        for char in maybe_word:
            if ('a' <= char <= 'z' or 'A' <= char <= 'Z' or '-' == char):
                word += char
        words.append(word)

print(max(words, key = lambda x: len(x)).lower())