CodingTest/Baekjoon

[baekjoon] 백준 2870번(파이썬): 수학숙제

JunJangE 2022. 1. 23. 00:54

문제

 

2870번: 수학숙제

종이에서 찾은 숫자의 개수를 M이라고 하면, 출력은 M줄로 이루어져야 한다. 각 줄에는 종이에서 찾은 숫자를 하나씩 출력해야 한다. 이때, 비내림차순으로 출력해야 한다. 비내림차순은 내림차

www.acmicpc.net

알고리즘

- 반복문을 통해 각 줄을 확인한다.

- 반복문을 통해 줄의 한 단어씩 확인한다.

- 단어가 숫자라면 cnt에 추가하고 숫자가 아닌데 cnt에 숫자가 있다면 cnt를 temp에 추가 후 cnt를 초기화시킨다.

- 모든 단어를 확인 후에도 cnt에 숫자가 있다면 cnt를 temp에 추가한다.

- 각 줄을 확인할 때마다 temp에 담겨있는 모든 수를 res에 추가한다.

- 모든 줄을 확인 후에 res를 오름차순으로 정렬 후 한 숫자씩 출력한다.

코드

import sys

n = int(sys.stdin.readline())

nums = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]

res = []

# 반복문을 통해 각 줄을 확인
for _ in range(n):
    m = list(map(str, sys.stdin.readline().strip("\n")))
    temp = []
    cnt = ""

    # 반복문을 통해 줄의 한단어씩 확인
    for i in m:
        # 단어가 숫자이면 cnt에 더한다.
        if i in nums:
            cnt += i

        # 단어가 숫자가 아니고 cnt에 숫자가 담겨있으면 temp에 추가한다.
        else:
            if cnt:
                temp.append(int(cnt))
                cnt = ""

    # 모든 단어를 확인 후에 cnt에 숫자가 담겨있으면 temp에 추가한다.
    if cnt:
        temp.append(int(cnt))

    # 모든 숫자를 res에 더한다.
    res += temp

# 오름차순으로 정렬 후 출력
res.sort()
for j in res:
    print(j)

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com