-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Gold III] Title: 가희와 탑, Time: 136 ms, Memory: 119476 KB -BaekjoonHub
- Loading branch information
1 parent
08e7ca1
commit 832c094
Showing
2 changed files
with
104 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
# [Gold III] 가희와 탑 - 24337 | ||
|
||
[문제 링크](https://www.acmicpc.net/problem/24337) | ||
|
||
### 성능 요약 | ||
|
||
메모리: 119476 KB, 시간: 136 ms | ||
|
||
### 분류 | ||
|
||
해 구성하기, 그리디 알고리즘 | ||
|
||
### 제출 일자 | ||
|
||
2024년 7월 11일 12:14:41 | ||
|
||
### 문제 설명 | ||
|
||
<p>일직선으로 다양한 높이의 건물들이 <em>N</em>개 존재합니다. 가희는 건물들의 왼쪽에, 단비는 건물들의 오른쪽에 있습니다. 일직선 상에 가희와 단비, 건물들은 아래와 같은 순서로 배치되어 있습니다.</p> | ||
|
||
<ul> | ||
<li>가희의 오른쪽에는 1번 건물이 있습니다.</li> | ||
<li><em>x</em>가 1이상 <em>N-1</em>이하의 정수일 때, x번 건물의 오른쪽에는 <em>x+1</em>번 건물이 있습니다.</li> | ||
<li><em>N</em>번 건물의 오른쪽에는 단비가 있습니다.</li> | ||
</ul> | ||
|
||
<p>가희와 단비가 볼 수 있는 건물은 아래와 같습니다.</p> | ||
|
||
<ul> | ||
<li>가희는 1번 건물을 볼 수 있습니다.</li> | ||
<li><em>k</em>번 건물보다 왼쪽에 있는 건물들이 <strong>모두</strong> <em>k</em>번 건물보다 높이가 낮다면, 가희는 <em>k</em>번 건물을 볼 수 있습니다.</li> | ||
<li>단비는 <em>N</em>번 건물을 볼 수 있습니다.</li> | ||
<li><em>k</em>번 건물보다 오른쪽에 있는 건물들이 <strong>모두</strong> <em>k</em>번 건물보다 높이가 낮다면, 단비는 <em>k</em>번 건물을 볼 수 있습니다.</li> | ||
</ul> | ||
|
||
<p>예를 들어, <em>N</em>이 3이고, 1번 건물의 높이가 1, 2번 건물의 높이가 3, 3번 건물의 높이가 2라고 하겠습니다.</p> | ||
|
||
<p style="text-align: center;"><img alt="" src="https://upload.acmicpc.net/5a6e0313-a6d1-43b4-9997-926cae9b0905/-/preview/"></p> | ||
|
||
<p style="text-align: center;"><strong>[그림 1] 가희와 단비, 그리고 건물들의 배치</strong></p> | ||
|
||
<p>가희가 볼 수 있는 건물과 단비가 볼 수 있는 건물의 수는 각각 2개입니다. 이를 각각 노란색, 연보라색으로 표시하겠습니다.</p> | ||
|
||
<p style="text-align: center;"><img alt="" src="https://upload.acmicpc.net/f0583b2b-3237-498e-95cf-af714b52cd15/-/preview/"> <img alt="" src="https://upload.acmicpc.net/777defd0-84a6-40ae-a24f-89154fa6ab8c/-/preview/"></p> | ||
|
||
<p style="text-align: center;"><strong>[좌] 가희가 볼 수 있는 건물 [우] 단비가 볼 수 있는 건물</strong></p> | ||
|
||
<p>가희가 3번 건물을 볼 수 없는 이유는 3번 건물 왼쪽에 있는 2번 건물의 높이가 3번 건물보다 높기 때문입니다. 그리고, 단비가 1번 건물을 볼 수 없는 이유는 1번 건물보다 오른쪽에 있는 2번 건물과 3번 건물이 1번 건물보다 높기 때문입니다.</p> | ||
|
||
<p>가희와 단비 사이에 있는 건물의 개수 <em>N</em>과 가희가 볼 수 있는 건물의 개수 <em>a</em>, 단비가 볼 수 있는 건물의 개수 <em>b</em>가 주어집니다. <strong>사전 순으로 가장 앞서는</strong> <em>N</em>개의 건물 높이 정보를 출력해 주세요.</p> | ||
|
||
### 입력 | ||
|
||
<p>첫째 줄에 건물의 개수 <em>N</em>, 가희가 볼 수 있는 건물의 개수 <em>a</em>, 단비가 볼 수 있는 건물의 개수 <em>b</em>가 공백으로 구분해서 주어집니다.</p> | ||
|
||
### 출력 | ||
|
||
<p>문제의 조건에 맞는 건물들의 높이 정보가 1개 이상 존재하는 경우 <em>N</em>개의 건물 높이 정보 중 <strong>사전순으로 가장 앞선 것</strong>을 출력해 주세요. 출력 형식은 다음을 만족해야 합니다.</p> | ||
|
||
<ul> | ||
<li>1번 건물, ... , <em>N</em>번 건물의 높이를 <strong>공백으로 구분해서 출력</strong>해 주세요. <strong>출력하는 수들이 모두 다를 필요는 없습니다.</strong></li> | ||
<li>높이는 <strong>1보다 크거나 같은 정수</strong>여야 합니다.</li> | ||
</ul> | ||
|
||
<p>문제의 조건에 맞는 건물들의 높이 정보가 존재하지 않으면 첫 줄에 -1을 출력해 주세요.</p> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
import sys | ||
from collections import deque | ||
|
||
# 일직선. 다양한 높이의 건물 n개 존재. | ||
# 가희는 건물의 왼쪽에, 단비는 건물의 오른쪽에 | ||
# 가희, 1번 건물, 2번 건물 ... n번, 단비 | ||
|
||
# 현재 위치의 건물보다 왼쪽에 있는 건물들이 모두 현재 위치 건물보다 높이 작으면 | ||
# 가희는 현재 위치 건물 볼 수 있음 | ||
|
||
# 현재 위치 건물보다 오른쪽에 있는 건물들이 모두 현재 위치보다 높이가 작으면 | ||
# 단비는 현재 위치 건물 볼 수 있음 | ||
|
||
# 두 사람이 볼 수 있는 건물의 개수가 주어질 때, | ||
# N개의 건물 높이 중 사전 순으로 가장 앞선 것 ?? | ||
|
||
|
||
n,a,b = map(int, input().split()) # 건물 개수, 가희가 볼 수 있는 a개, 단비가 볼 수 있는 b개 | ||
|
||
# 1~(a-1) ~ max(a,b) ~ (b-1) ~ 1 | ||
|
||
|
||
res = deque() | ||
|
||
for i in range(1,a): | ||
res.append(i) | ||
res.append(max(a,b)) | ||
for i in range(b-1, 0, -1): | ||
res.append(i) | ||
|
||
if len(res) > n: | ||
print(-1) | ||
else: | ||
temp = res.popleft() # 가장 첫번째 꺼 일단 꺼낸 다음에 | ||
for _ in range(n - len(res) - 1): # 일단 한개 뺏으니까 그거만큼 반영 | ||
res.appendleft(1) | ||
res.appendleft(temp) | ||
print(*res) |