백준 2870 수학문제
https://www.acmicpc.net/problem/2870
2870번: 수학숙제
종이에서 찾은 숫자의 개수를 M이라고 하면, 출력은 M줄로 이루어져야 한다. 각 줄에는 종이에서 찾은 숫자를 하나씩 출력해야 한다. 이때, 비내림차순으로 출력해야 한다. 비내림차순은 내림차
www.acmicpc.net
코드
방법 1.
import sys
N = int(sys.stdin.readline().rstrip())
num = ["0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9"]
ans = []
for _ in range(N):
word = sys.stdin.readline().rstrip()
check = ""
temp = []
for i in word:
if i in num:
check += i
else:
if check:
temp.append(int(check))
check = ""
if check:
temp.append(int(check))
ans += temp
ans.sort()
for i in ans:
print(i)
num에는 0에서 9까지의 숫자를 넣었습니다.
입력받은 문자가 num리스트 안에 있다면 check에 넣고, 없다면 else문으로 갑니다.
else문에서는 만약 앞선 check에 숫자로 된 문자열이 있다면 공백을 넣고, 없다면 그냥 넘어갑니다.
반복문을 나가서 check에 숫자가 있는지 확인한 뒤에 있다면 temp에 append해주고, temp는 ans에 넣어 ans는 나중에 오름차순 정렬합니다.
방법 2. 정규표현식
import re, sys
N = int(sys.stdin.readline().rstrip())
p = re.compile('[0-9]+')
ans = []
for _ in range(N):
result = p.findall(sys.stdin.readline().rstrip())
for x in result:
ans.append(int(x))
ans.sort()
for i in ans:
print(i)
Search 🔍
1과 2 모두 찾아 본 내용입니다.
- check라는 임시 저장소에 문자열 확인 후 빈문자열 혹은 문자열 집어넣기 -> 문자열 처리 하는 방법 중 가장 이해가 잘 되는 방식이었습니다.
- 정규표현식 import re
- 파싱
'코딩테스트' 카테고리의 다른 글
[백준] 16131 기숙사 서바이벌 (Dormvival Games) - python (2) | 2023.01.28 |
---|---|
[백준] 3048 개미 - python (1) | 2023.01.28 |
[백준] 1244 스위치 켜고 끄기 - python (1) | 2023.01.27 |
[백준] 8896 가위 바위 보 - python (3) | 2023.01.26 |
[백준] 2223 금화 - python (2) | 2023.01.26 |