Skip to content

Commit

Permalink
[Silver IV] Title: 페이지 세기, Time: 224 ms, Memory: 32412 KB -BaekjoonHub
Browse files Browse the repository at this point in the history
  • Loading branch information
nahowo committed Dec 20, 2024
1 parent 72a354a commit f858dae
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 0 deletions.
46 changes: 46 additions & 0 deletions 백준/Silver/4821. 페이지 세기/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# [Silver IV] 페이지 세기 - 4821

[문제 링크](https://www.acmicpc.net/problem/4821)

### 성능 요약

메모리: 32412 KB, 시간: 224 ms

### 분류

구현, 파싱, 문자열

### 제출 일자

2024년 12월 20일 15:30:57

### 문제 설명

<p>
워드, 한글, 메모장과 같은 워드 프로세서에서 인쇄를 할 때, 페이지 범위를 직접 입력하여 지정할 수 있다. 예를 들면, 다음과 같이 입력할 수 있다.</p>

<p>
10-15,25-28,8-4,13-20,9,8-8</p>

<p>
사용자는 위처럼 인쇄하고자 하는 범위를 콤마로 구분하여 입력할 수 있다.</p>

<p>
각 인쇄 범위는 양의 정수 하나 또는 하이픈(-)로 구분된 두 양의 정수이다. 수 두 개로 이루어진 범위에서 앞의 수를 low, 뒤의 수를 high라고 한다. 만약, low > high인 경우에는 이 범위는 인쇄하지 않는다. 또, 인쇄 범위가 문서의 범위를 넘어가는 경우에는 출력할 수 있는 페이지만 출력한다. 페이지 번호는 1부터 시작한다.</p>

<p>
인쇄 범위는 겹칠 수 있다. 겹치는 페이지는 여러 번 인쇄하는 것이 아니고, 한 번만 인쇄해야 한다. (위의 예제에서 13, 14, 15는 두 범위에 포함된다)</p>

<p>
인쇄 범위가 주어졌을 때, 출력해야 하는 페이지의 수를 구하는 프로그램을 작성하시오.</p>

### 입력

<p>
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 문서의 총 페이지 수가 주어진다. 둘째 줄에는 인쇄 범위가 문제 설명에 나온 형식과 같이 주어진다. 입력의 마지막에는 0이 하나 주어진다. 문서는 많아야 1000페이지이고, 인쇄 범위의 길이는 1000글자를 넘지 않는다.</p>

### 출력

<p>
각 테스트 케이스에 대해서, 출력해야 하는 페이지의 수를 출력한다.</p>

23 changes: 23 additions & 0 deletions 백준/Silver/4821. 페이지 세기/페이지 세기.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import sys
input = sys.stdin.readline

def solution(pages):
printing = [False] * (pages + 1)
ranges = input().rstrip().split(",")
for i in range(len(ranges)):
try:
start, end = map(int, ranges[i].split("-"))
for p in range(start, min(end, pages) + 1):
printing[p] = True
except:
idx = int(ranges[i])
if idx <= pages:
printing[idx] = True

return printing.count(True)

while True:
pages = int(input())
if pages == 0:
break
print(solution(pages))

0 comments on commit f858dae

Please sign in to comment.