- 문제 : https://www.acmicpc.net/problem/2870

 

문제 이해 

- 여러 개의 문자열이 주어지는데, 그때마다 숫자인 부분들을 모두 모아서 오름차순으로 출력하는 문제다.

- 주어진 문자열(word)를 선형 탐색하면서 숫자인 부분들만 temp로 모으고, 만약 다음 원소가 알파벳이라면 해당 숫자는 저장한 뒤, temp를 초기화한다. 

- 여기서 주의해야할 점은 가장 끝 원소도 명시적으로 처리(i == len(word) - 1) 해줘야 하고, 그때 이전에 입력된 숫자가 있는지 확인(temp != '')하는 것이다. 

- 위 로직으로 숫자들을 answer에 모두 모았으면 오름차순 정렬한 뒤 하나씩 출력해주면된다.

 

정답 풀이 

answer = []
for _ in range(int(input())):
    temp = '' # 그때그때마다 숫자들 모으는 용도
    word = list(input())
    for i in range(len(word)):
        if word[i].isdigit():
            temp += word[i]
        if not word[i].isdigit() or i == len(word) - 1:
            if temp != '':
                answer.append(int(temp))
                temp = '' 

answer.sort()
for i in range(len(answer)):
    print(answer[i])

+ Recent posts