1. 2017 ALOHA 내전
Advanced Division
2017. 5. 14.
Notice
1. 대회 진행 시간은 3 시간입니다.
2. 문제에 별도의 표기가 없는 한 Memory Limit 은 512MB, Time Limit 은
1 초입니다. Stack Memory 의 제한은 8MB 입니다.
3. 대회 및 문제와 관련된 질문은 Domjudge 의 Clarification 기능을 이용하여
주세요.
4. 순위는 해결한 문제가 많은 순, 해결한 문제 수가 같을 경우
페널티(Penalty)가 적은 순 입니다.
Penalty = (해결한 문제들의 최초 Accepted 시각들의 합) + (해결한
문제들의 Accepted 되지 않은 제출 수 * 20min)
출제 – 권기택, 김태훈, 이경준, 최기원, 최현경, 허재석
검수 – 권기택, 김태훈, 정채홍, 최현경, 허재석
Sponsored By
2. 2
A. 기원이의 치킨집
Time Limit : 1 초
30 년간 프로그래머로 일한 뒤 은퇴한 기원이는 여느 개발자들처럼 치킨집을
차리기로 결심했다. 수익을 최대로 하기 위하여 전문가에게 조언을 구하였고,
기원이가 사는 동네의 모든 아파트와의 거리들의 합이 최소가 되는 지점에
치킨집을 차리기로 결정하였다. 기원이를 도와 치킨집을 차릴 최적의 위치를
찾아주자.
입력
기원이의 동네의 아파트는 모두 일직선 상에 있으며, 임의의 점을 원점으로
하는 수직선 상의 좌표로 아파들의 위치를 표현한다.
첫번째 줄에 아파트의 개수 N 이 주어진다. (1 ≤ 𝑁 ≤ 105
)
두번째 줄에는 아파트의 위치 𝑋𝑖가 정수로 주어진다. ( |𝑋𝑖| ≤ 109
)
아파트의 위치는 서로 겹치지 않으며 아파트와 치킨집은 길이나 부피가 없
는 점으로 생각한다.
출력
기원이가 치킨집을 차릴 최적의 위치를 찾아서 출력한다.
최적의 위치가 여러 곳이라면 좌표값이 가장 작은 곳을 출력한다.
예제 입력 예제 출력
4
-3 5 2 7
2
3. 3
B. IT/BT 관 구하기
Time Limit: 1 초
성빈이는 점심을 먹고 경영대 친구들과 IT/BT 관에 커피를 마시러 왔다. 하지
만 성빈이는 실수로 친구가 준 과자를 떨어트리고 마는데… 과자가 떨어진
타일의 총 둘레의 길이를 구하지 않으면 IT/BT 건물을 경영대 건물로 바꿔버
리겠다는 협박을 들은 성빈이를 도와주자.
입력
IT/BT 관의 세로 길이 N, 가로 길이 M 이 주어진다. (0 < 𝑁, 𝑀 ≤ 200, 𝑁, 𝑀
은 정수)
다음 N 줄에 걸쳐 타일의 정보가 주어진다. 과자가 떨어진 타일은 1 로, 그렇
지 않은 타일은 0 으로 표시된다.
출력
과자가 떨어진 타일들의 총 둘레의 길이를 출력한다. 각 타일의 가로, 세로
길이는 1이다. 인접한 과자가 떨어진 타일끼리 공유하는 변의 길이는 둘레의
길이에 포함되지 않아야 한다.
예제 입력 예제 출력
4 5
00110
01100
01001
00011
20
4. 4
C. 자리 배치하기
Time Limit: 1 초
한양대학교 알고리즘 동아리 알로하는 올해 세계 최고의 알고리즘 연구단체
들 중 하나로 인정받아 세계 최고의 시상식에 초대받았다. 하지만 기뻐할 틈
도 없이 알로하 회장인 권기택은 고민에 빠졌다. 사실 알로하인들은 붙어있
기만 하면 엄청나게 떠드는 수다쟁이들이었던 것이다!!
행사장에는 직선 형태로 자리를 배치하는데 알로하인들이 앉을 수 있는 자
리들을 미리 통보받았다. 아무런 준비 없이 자리에 막 앉는다면 매우 시끄러
워질 수 있기 때문에 회장은 인접한 알로하인들의 떨어진 거리의 최소 값이
가능한 크게 알로하인들의 자리를 배치하기를 원한다.
이 때 최소 거리의 최대값이 얼마인지 구해주자.
입력
첫째 줄에 앉을 수 있는 자리들의 수 N 과 초청받는 알로하인들의 수 M 이
주어진다. ( 2 ≤ M ≤ N ≤ 105
)
둘째 줄에는 앉을 수 있는 자리들의 위치 𝑋𝑖가 주어진다. (0 ≤ 𝑋𝑖 ≤ 108
)
출력
가장 큰 최소 거리를 출력한다.
예제 입력 예제 출력
5 3
1 2 8 4 9
3
3 명을 1, 4, 8 위치에 배치할 경우, 최소 거리가 3 으로 가장 크다.
6. 6
D. 합이 최대인 증가하는 부분 수열 구하기
Time Limit: 1 초
수열 A 가 주어졌을 때, 증가하는 부분 수열 중 합이 최대인 수열을 구하는
프로그램을 작성하시오.
예를 들면, 수열 A = { 10, 40, 20, 70, 10, 30, 20, 50 } 인 경우에 합이 최대인
증가하는 부분 수열은 A = { 10, 40, 20, 70, 10, 30, 20, 50 } 이고, 합은 120 이
다.
입력
첫째 줄에 수열 A 의 크기 N 이 주어진다. (1 ≤ 𝑁 ≤ 500)
둘째 줄에는 수열 A 의 원소들이 주어진다. (0 ≤ 𝐴𝑖 ≤ 1,000)
출력
수열 A 의 합이 최대인 증가하는 부분 수열의 합을 출력한다.
예제 입력 예제 출력
8
10 40 20 70 10 30 20 50
120
7. 7
E. 한양대 가는 길
Time Limit: 1 초
서현이는 매일 밤 꿈에서 한양대학교로 수업을 들으러 간다.
하지만 학교로 가는 길엔 무시무시한 괴물이 도사리고 있다. 괴물들은 체력
을 가지고 있으며 서현이는 괴물들을 무시하고 가는 것은 자존심에 큰 타격
이라 생각하여 무조건 처치하고 지나간다. 각 괴물들은 정해진 체력을 가지
고 있으며 서현이는 괴물들을 공격하여 1 초에 1 의 데미지를 줄 수 있다. 예
를 들어 괴물의 체력이 5라고 가정하면 서현이는 정확히 5 초만에 괴물을 죽
일 수 있다. 또, 서현이는 학교로 가던 도중 괴물을 K 번 소멸시키는 초능력
을 갖고 있다. 서현이가 초능력으로 괴물을 소멸시킬 때에는 시간이 걸리지
않는다.
서현이의 집은 가장 왼쪽 위에 있고 한양대학교는 가장 오른쪽 아래에 존재
한다. 서현이는 마음이 너무 급한 나머지 오른쪽과 아래쪽 방향으로만 움직
이고 인접한 칸으로만 이동할 수 있다. 인접한 칸으로 이동할 때는 1초가 소
요된다.
출석을 부르기 전에 서현이가 최소한의 시간으로 한양대학교로 갈 수 있도
록 도와주자.
입력
첫번째 줄에 행의 개수 N 열의 개수 M, 괴물을 소멸시킬 수 있는 횟수 K 가
주어진다. (1<N<200,1<M<200, 0≤K<100)
다음 N 줄에 걸쳐 각 줄마다 M 개의 정수가 공백으로 구분되어 입력된다. 각
숫자들은 괴물의 체력을 나타내며 0 이상 50 이하이다. 체력이 0 인 곳은 괴물
이 없는 곳으로 간주한다.
서현이가 처음 있는 위치와 한양대학교에는 괴물이 없다.
출력
서현이가 한양대학교까지 가는데 걸리는 최소 시간을 출력한다. 단위는 초이
다.
8. 8
아래 아래 ( 초능력 사용 ) 오른쪽 오른쪽
1 초 0 초 2 초 0 초 -> 3 초
4 번 움직이니 4 초.
따라서 총 7 초.
예제 입력 예제 출력
3 3 1
0 2 3
1 2 2
3 2 0
7
9. 9
F. 센세의 수식
Memory Limit : 256MB / Time Limit : 1 초
지훈이는 소수(prime number) x 와 음이 아닌 정수 ai (1 ≤ 𝑖 ≤ 𝑁) 을 알고있
다. 어느 날 지훈이는 라는 수식을 쓰고 연구하기 시
작했다. 만약 값을 계산하여
𝑠
𝑡
(𝑡 = ∏ 𝑥 𝑎𝑖𝑛
𝑖=1 ) 라는 분수를 얻었을 때, s 와 t 의
최대공약수는 얼마일까?
입력
첫째 줄에 배열의 길이 n 과 소수 x 가 입력된다.
두번째 줄에 공백으로 구분되어 ai 들이 오름차순으로 입력된다.
( 0 ≤ a1 ≤ 𝑎2 ≤ ⋯ ≤ 𝑎 𝑛 ≤ 109
)
출력
s 와 t 의 최대공약수를 109
+ 7 로 나눈 나머지를 출력한다.
1
3
+
1
9
+
1
27
=
243 + 81 + 27
729
=
351
729
, 𝑠 = 351, 𝑡 = 729, gcd(351, 729) = 27
예제 입력 예제 출력
2 2
2 2
8
예제 입력 예제 출력
3 3
1 2 3
27
10. 10
예제 입력 예제 출력
2 2
29 29
73741817
예제 입력 예제 출력
4 5
0 0 0 0
1
11. 11
G. 주언이의 알로하 TV
Memory Limit: 128MB / Time Limit: 2 초
술에 취한 주언이는 혼자 집에 잘 들어갈 수 있다는 것을 보여주기 위해
알로하TV로 방송을 하는 중이다. 비틀거리며 보도블럭을 걷던 주언이는 바
닥의 알록달록한 보도블럭을 보고 문득 빨간색 블럭은 매우 위험하다는 생
각이 들었다.
주언이의 방송을 보고 있던 규리는 주언이가 위험해 보여 최대한 빨리 집
에 갈 수 있도록 댓글로 명령을 하려고 한다. 그러나 주언이는 빨간색 블럭
을 밟지않는 조건으로 규리의 명령을 따르려고 한다.
보도블럭은 N*M 크기의 격자판 모양이고 주언이는 그 격자판 위에서 상,
하, 좌, 우 4방향으로 1칸씩 이동할 수 있다.
규리는 주언이가 취했다는 것을 이용해 빨간색을 무시하고 최단거리로 명
령을 하려고 하지만 주언이도 바보가 아니기 때문에 일정 횟수 이상 빨간색
을 밟으면 그 자리에 누워 자겠다고 선언했다. 규리는 최대 K번 만큼 주언
이가 빨간색 칸을 밟도록 할 수 있다.
규리는 주언이가 길거리에서 잠을 자지 않고 최대한 빨리 집에 보내려고
한다. 이 때 규리는 최소 몇 번의 명령을 하여야 할까?
입력
첫째 줄에 세 정수 N, M, K (2≤N, M≤50, 0≤K≤4) 이 주어진다. 다음 N개의
줄에는 M개의 문자로 보도블럭이 주어진다. 각각의 문자들은 붙어서 입력으
로 주어진다.
보도블럭은 주언이에게 보이는 색 R(빨간색), G(초록색), B(파란색) 3가지와
P(주언이), 그리고 H(주언이의 집)으로 구성되어있다.
12. 12
출력
첫째 줄에 주언이가 집에 도착할 수 있는 최단 시간을 출력한다. 도착 위치
로 이동할 수 없는 경우는 -1을 출력한다.
예제 입력 예제 출력
4 6 0
PRGBBG
BRGRGR
BRBRGG
GBGRBH
14
예제 입력 예제 출력
4 6 1
PRGBBG
BRGRGR
BRBRGG
GBGRBH
8
13. 13
H. King Moves
Time Limit : 1 초
Chess 에서 반드시 살아남야아 하는 기물인 King 은 보통 대각선을 포함하여
인접한 8 개의 칸으로 움직일 수 있다. 하지만 King 이 모서리에 있게 되는
경우에는 갈 수 있는 칸이 줄어드는데, 예를 들어 h8 에 위치할 경우에는 g8,
g7, h7 세 군데만 갈 수 있게 된다.
현재 King 의 위치가 주어질 때, King 을 움직일 수 있는 경우의 수를
출력한다. 단, King 을 반드시 움직여야 하며 체스판 위에 다른 기물은 없다고
가정한다.
입력
현재 King 의 위치가 주어진다. a – h 까지의 알파벳 소문자로 몇번째 열에
위치하는지, 1-8 까지의 숫자로 몇번째 행에 위치하는지를 나타내어 a1 와
같이 열을 나타내는 문자가 먼저, 행을 나타내는 문자가 나중에 입력된다.
출력
King 이 움직일 수 있는 경우의 수를 출력한다.
예제 입력 예제 출력
a5 5