Skip to content

Commit

Permalink
[Silver IV] Title: 동방 프로젝트 (Small), Time: 36 ms, Memory: 31120 KB -Ba…
Browse files Browse the repository at this point in the history
…ekjoonHub
  • Loading branch information
ddubbu-dev committed Sep 15, 2024
1 parent 455859e commit d5e47f7
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# [Silver IV] 동방 프로젝트 (Small) - 14594

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

### 성능 요약

메모리: 31120 KB, 시간: 36 ms

### 분류

구현, 시뮬레이션

### 제출 일자

2024년 9월 15일 16:14:27

### 문제 설명

<p>동아리방이 가지고 싶었던 병찬이는 LINK 사업단에 문의하여 N개의 방 중의 하나를 얻을 기회를 얻었다. 일자로 되어있는 건물에 N개의 방은 일직선상에 존재하며, 각 방에는 번호가 매겨져 있다. 맨 왼쪽 방의 번호는 1번이며, 순서대로 증가하여 맨 오른쪽 방의 번호가 N번이다. 각 방 사이에는 방을 구분하는 벽이 존재한다.</p>

<p>물론 병찬이 외에도 많은 사람이 동아리방을 원한다. 다행히 방은 충분했기에 병찬이는 안심하고 있었지만…</p>

<p>그때였다.</p>

<p>빅-종빈빌런이 나타나 건물 벽을 허물기 시작한 것이다! 빅-종빈빌런은 다음과 같은 규칙으로 벽을 무너뜨린다.</p>

<ul>
<li>x < y 를 만족하는 두 방에 대해서 x번 방부터 y번 방 사이에 있는 모든 벽을 허문다.</li>
<li>두 방 사이의 벽이 허물어지면 두 방은 하나의 방으로 합쳐진다.</li>
<li>이미 허물어진 벽이 존재한다면 무시하고 다음 벽을 허문다.</li>
<li>빅-종빈빌런은 건물이 무너지는 걸 원치 않기 때문에, 1번 방의 왼쪽 벽과 N번 방의 오른쪽 벽(즉, 바깥과 연결된 벽)은 허물지 않는다.</li>
</ul>

<p>동아리 방의 개수가 점점 줄어들자 병찬이는 초조해졌다. 이에 병찬이는 동아리방을 얻을 수 있는지에 대한 확률을 계산하기 위해 남는 동아리방의 수를 구하고 싶어 한다. 병찬이를 위해 빅-종빈빌런의 행동 횟수 M과 동방의 개수 N이 주어졌을 때, 남은 동아리방의 수를 구해주자.</p>

### 입력

<p>첫 번째 줄에는 동아리방의 개수를 나타내는 양의 정수 N(2 ≤ N ≤ 100) 이 주어진다. 두 번째 줄에는 빅-종빈빌런의 행동 횟수를 나타내는 음이 아닌 정수 M(0 ≤ M ≤ 100) 이 주어진다. 세 번째 줄부터 M개의 줄에 걸쳐 빅-종빈빌런의 행동이 양의 정수 x, y(1 ≤ x < y ≤ N) 로 주어진다. 여기서 행동이란 x번 방부터 y번 방 사이의 벽을 무너뜨리는 것을 의미한다.</p>

<p>빅-종빈빌런은 매우 허당이기 때문에 동일한 행동을 여러 번 할 수 있음에 유의하라.</p>

### 출력

<p>빅-종빈빌런의 모든 행동이 끝난 후 남아있는 동방의 개수를 한 줄에 출력한다.</p>

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import sys
readline = lambda: sys.stdin.readline().strip()

rooms = int(readline())
actions = int(readline())
remain_rooms = list(range(1, rooms + 1))


for _ in range(actions):
x, y = map(int, readline().split())

for delete_room_num in range(x, y): # y 제외
if delete_room_num in remain_rooms:
remain_rooms.remove(delete_room_num)


print(len(remain_rooms))

0 comments on commit d5e47f7

Please sign in to comment.