diff --git "a/\353\260\261\354\244\200/Silver/4821.\342\200\205\355\216\230\354\235\264\354\247\200\342\200\205\354\204\270\352\270\260/README.md" "b/\353\260\261\354\244\200/Silver/4821.\342\200\205\355\216\230\354\235\264\354\247\200\342\200\205\354\204\270\352\270\260/README.md" new file mode 100644 index 0000000..49223ca --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/4821.\342\200\205\355\216\230\354\235\264\354\247\200\342\200\205\354\204\270\352\270\260/README.md" @@ -0,0 +1,46 @@ +# [Silver IV] 페이지 세기 - 4821 + +[문제 링크](https://www.acmicpc.net/problem/4821) + +### 성능 요약 + +메모리: 32412 KB, 시간: 224 ms + +### 분류 + +구현, 파싱, 문자열 + +### 제출 일자 + +2024년 12월 20일 15:30:57 + +### 문제 설명 + +
+ 워드, 한글, 메모장과 같은 워드 프로세서에서 인쇄를 할 때, 페이지 범위를 직접 입력하여 지정할 수 있다. 예를 들면, 다음과 같이 입력할 수 있다.
+ ++ 10-15,25-28,8-4,13-20,9,8-8
+ ++ 사용자는 위처럼 인쇄하고자 하는 범위를 콤마로 구분하여 입력할 수 있다.
+ ++ 각 인쇄 범위는 양의 정수 하나 또는 하이픈(-)로 구분된 두 양의 정수이다. 수 두 개로 이루어진 범위에서 앞의 수를 low, 뒤의 수를 high라고 한다. 만약, low > high인 경우에는 이 범위는 인쇄하지 않는다. 또, 인쇄 범위가 문서의 범위를 넘어가는 경우에는 출력할 수 있는 페이지만 출력한다. 페이지 번호는 1부터 시작한다.
+ ++ 인쇄 범위는 겹칠 수 있다. 겹치는 페이지는 여러 번 인쇄하는 것이 아니고, 한 번만 인쇄해야 한다. (위의 예제에서 13, 14, 15는 두 범위에 포함된다)
+ ++ 인쇄 범위가 주어졌을 때, 출력해야 하는 페이지의 수를 구하는 프로그램을 작성하시오.
+ +### 입력 + ++ 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 문서의 총 페이지 수가 주어진다. 둘째 줄에는 인쇄 범위가 문제 설명에 나온 형식과 같이 주어진다. 입력의 마지막에는 0이 하나 주어진다. 문서는 많아야 1000페이지이고, 인쇄 범위의 길이는 1000글자를 넘지 않는다.
+ +### 출력 + ++ 각 테스트 케이스에 대해서, 출력해야 하는 페이지의 수를 출력한다.
+ diff --git "a/\353\260\261\354\244\200/Silver/4821.\342\200\205\355\216\230\354\235\264\354\247\200\342\200\205\354\204\270\352\270\260/\355\216\230\354\235\264\354\247\200\342\200\205\354\204\270\352\270\260.py" "b/\353\260\261\354\244\200/Silver/4821.\342\200\205\355\216\230\354\235\264\354\247\200\342\200\205\354\204\270\352\270\260/\355\216\230\354\235\264\354\247\200\342\200\205\354\204\270\352\270\260.py" new file mode 100644 index 0000000..b90aa42 --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/4821.\342\200\205\355\216\230\354\235\264\354\247\200\342\200\205\354\204\270\352\270\260/\355\216\230\354\235\264\354\247\200\342\200\205\354\204\270\352\270\260.py" @@ -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)) \ No newline at end of file