1. 2017 고대경시
Div.2 (신입생 대회)
1. 고려대학교는 사랑입니다 [11942번 문제]
2. 팬들에게 둘러쌓인 홍준
3. 오늘도 졌다
4. 이음줄
5. 암호 해독
6. 사수빈탕
Div.1 (일반 대회)
1. 암호 해독
2. 사수빈탕
3-1. 팰린드롬 개수 구하기 (Small) [14505번 문제]
3-2. 팰린드롬 개수 구하기 (Large) [14517번 문제]
4-1. (Small)
4-2. (Large)
5-1. Line Friends (Small)
5-2. Line Friends (Large)
6-1. KUBC League (Small)
6-2. KUBC League (Large)
Open Contest
1. 고려대학교는 사랑입니다 [11942번 문제]
2. 팬들에게 둘러쌓인 홍준
3. 오늘도 졌다
4. 이음줄
5. 암호 해독
6. 사수빈탕
7-1. 팰린드롬 개수 구하기 (Small) [14505번 문제]
7-2. 팰린드롬 개수 구하기 (Large) [14517번 문제]
8-1. (Small)
8-2. (Large)
9-1. Line Friends (Small)
9-2. Line Friends (Large)
10-1. KUBC League (Small)
10-2. KUBC League (Large)
2. 2017 고대경시
2. 팬들에게 둘러쌓인 홍준
홍준은 참 팬이 많다. 이를 본 구사과는 BOJ 슬랙에서 이모티콘을 만들었다.
선풍기 모양의 이모티콘은 :fan: 이고, 홍준의 이모티콘은 :(홍준의 아이디): 이다. 홍준의 아이디가 주어지면
구사과가 만든 이모티콘을 출력하는 프로그램을 작성하여라. 자세한 출력 방식은 입출력 형식을 참고하면 된
다.
입력 (stdin)
첫 번째 줄에 홍준의 아이디를 입력받는다. 홍준의 아이디는 길이가 20 이하인 문자열이며, 알파벳 소문자,
알파벳 대문자, 숫자로만 이루어졌다.
출력 (stdout)
3개의 줄에 걸쳐, 팬들에게 둘러쌓인 홍준의 모습을 출력한다.
입출력 예제
입력 (stdin) 출력 (stdout)
appa
:fan::fan::fan:
:fan::appa::fan:
:fan::fan::fan:
입력 (stdin) 출력 (stdout)
h0ngjun7
:fan::fan::fan:
:fan::h0ngjun7::fan:
:fan::fan::fan:
3. 2017 고대경시
3. 오늘도 졌다
프로야구팀 울림 제미니스는 오늘도 졌다. 이번에는 스타트링크 걸리버스의 4번타자가 끝내기 홈런을 쳐서
졌다. 울림 제미니스의 열렬한 팬인 지수는 속으로 화를 참으며 어떤 선수 때문에 졌는지 생각해보았다. 지수
는 팀이 역전패를 했다면 불펜 투수의 책임이고, 그렇지 않다면 타자와 선발 투수의 책임이라고 생각했다.
지수는 오늘 경기에서 울림이 어떻게 졌는지 생각해보려 했지만, 기분이 너무 더러워서 뭘 할 의욕이 나지
않았다. 지수를 도와 오늘 경기에서 울림 제미니스가 역전패를 했는지 구하는 프로그램을 작성하여라. 역전패
가 성립하려면 경기 도중 울림 제미니스가 이기고 있는 순간이 있어야 한다.
입력 (stdin)
첫 번째 줄에는 9개의 정수가 주어지는데, 오늘 경기에서 울림 제미니스의 각 회에 낸 득점이 주어진다.
두 번째 줄에도 9개의 정수가 주어지는데, 스타트링크 걸리버스가 각 회에 낸 득점이 주어진다.
한 팀이 한 회에 낸 득점은 모두 0 이상 20 이하이며, 스타트링크 걸리버스의 총 득점이 울림 제미니스의 총
득점보다 많다.
출력 (stdout)
만약 울림 제미니스가 역전패를 했다면 'Yes'를 출력한다.
그렇지 않으면 'No'를 출력한다.
입출력 예제
입력 (stdin) 출력 (stdout)
1 0 0 0 0 0 2 2 1
0 0 3 0 0 0 0 1 4
Yes
입력 (stdin) 출력 (stdout)
0 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 4 0
No
예제 설명
첫 번째 예제에서 울림 제미니스가 이기고 있던 순간은 (울림이 1회 초에 1점을 낸 순간) ~ (스타트링크가 3
회 말에 1점을 낸 순간)과 (울림이 8회 초에 1점을 낸 순간) ~ (스타트링크가 9회 말에 2점을 낸 순간)이다.
4. 2017 고대경시
4. 이음줄
이음줄은 고려대학교 제49대 총학생회장단입니다. 이음줄이 작년 가을에 선거운동을 했을 때 이런 포스터를
나눠줬어요.
이 포스터는 신기하게도 접힌 부분을 펼 수 있어요. 접힌 부분을 펴면 다음과 같이 포스터가 펴지죠.
5. 2017 고대경시
지노는 이음줄 포스터를 보고 감명을 깊게 받은 나머지, 이음줄 포스터와 비슷하게 포스터를 만들어 보려고
합니다. 그러나 지노가 갖고 있는 건 오직 Hcm x Vcm 크기의 직사각형 모양 종이밖에 없어요. 지노가 이
종이를 가지고 포스터를 만들었을 때 어떤 크기의 포스터가 생길까요?
입력 (stdin)
첫 번째 줄에 종이의 가로 길이 H, 세로 길이 V가 주어집니다. H와 V는 소수점 아래 두 번째 자리까지 주어
집니다. (H > V, 1.00 ≤ H, V ≤ 1000.00)
출력 (stdout)
Hcm x Vcm 크기의 종이를 접어서 만든 이음줄 포스터의 가로 길이와 세로 길이 (센티미터 단위)를 출력하
세요. 답은 소수점 아래 셋째 자리에서 반올림한 값을 출력합니다. 계산한 답과 정답 간의 오차가
0.01 이하라면 정답으로 간주합니다.
입출력 예제
입력 (stdin) 출력 (stdout)
120.00 90.00 63.25 47.43
6. 2017 고대경시
5. 암호 해독
로마의 장군 카이사르는 로마군의 작전을 적이 모르게 하기 위하여 암호를 사용했다. 카이사르는 다음과 같
이 문장에 있는 모든 알파벳 글자를 몇 칸 뒤의 알파벳으로 바꾸는 방식으로 암호를 만들었다. 아래 표는 모
든 글자를 17칸 뒤의 알파벳으로 바꿨을 때 각 글자가 어떤 알파벳으로 바뀌는지 나타낸 표이다.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
이 방법에 따라 ‘Baekjoon Online Judge’를 암호화하면 ‘Srvbaffe Feczev Aluxv’가 된다.
당신은 페르시아 군대의 장군으로서 카이사르의 암호를 해독해야 한다. 당신은 카이사르가 어떤 방법으로 문
장을 암호화하는지는 알고 있었지만 카이사르가 몇 칸 뒤의 알파벳으로 바꾸는지는 모른다. 다행히, 당신의
부하가 로마어 사전을 가져와서 이를 통해 카이사르의 암호를 해독할 수 있을 것으로 보인다. 보통 전령에는
보편적인 단어가 나오기 때문에 사전에 나오는 단어가 반드시 있을 것이다. 따라서 암호를 해독한 후, 해독한
문장에서 사전에 나오는 단어가 반드시 하나 이상 등장해야 한다.
카이사르의 암호와 사전의 정보가 주어졌을 때, 암호를 해독하는 프로그램을 작성하여라.
입력 (stdin)
첫 번째 줄에 암호문이 주어진다. 암호문은 소문자로만 이루어진 길이 100 이하의 문자열이다.
두 번째 줄에는 사전에 있는 단어의 수 N이 주어진다. (1 ≤ N ≤ 20)
세 번째 줄부터 N개의 줄에는 사전에 있는 단어가 주어진다. 모든 단어는 소문자로만 이루어진 길이 20 이
하의 문자열이다.
출력 (stdout)
암호문을 해독하여 나온 원문을 출력한다. 모든 데이터에 대해서 답이 한 가지만 있는 경우만 들어온다고 가
정한다.
입출력 예제
입력 (stdin) 출력 (stdout)
srbvaffefeczevaluxv
3
bake
bread
cookie
bakejoononlinejudge
7. 2017 고대경시
6. 사수빈탕
수빈이는 좌표평면 위에 앉아있다. "나는 좌표평면이 너무 좋아!!" 라고 수빈이가 말했다. 좌표평면에는 N개
의 사탕바구니가 있고, 각 사탕 바구니에는 M개의 사탕이 있다. 각 사탕 바구니는 (x1, y1), (x2, y2), …, (xn,
yn)에 있고, 수빈이는 (0, 0)에 있다.
오늘은 날씨가 덥다. 따라서 시간이 1만큼 지날 때마다 모든 사탕바구니에서 사탕은 1만큼 줄어든다. 수빈이
는 매우 배가 고프기 때문에, 사탕바구니에 있는 사탕을 순식간에 모두 먹을 수 있다. 수빈이가 1만큼 움직
일 때, 시간은 1만큼 지나간다. 수빈이는 위쪽 (y-좌표가 늘어나는 방향) 또는 오른쪽 (x-좌표가 늘어나는 방
향)으로만 움직일 수 있다.
수빈이가 먹을 수 있는 사탕의 최대 개수를 구하는 프로그램을 작성하시오.
입력 (stdin)
첫째 줄에 N과 M이 주어진다.
둘째 줄부터 N개의 줄에 사탕 바구니의 위치 xi, yi가 주어진다.
(0 ≤ N ≤ 300, 1 ≤ M ≤ 1,000,000, 0 ≤ xi, yi ≤ 300)
사탕 바구니의 위치는 중복되지 않는다.
출력 (stdout)
수빈이가 먹을 수 있는 사탕의 최대 개수를 출력한다.
입출력 예제
입력 (stdin) 출력 (stdout)
3 15
1 1
3 1
1 6
24
8. 2017 고대경시
9. Line Friends
수직선 위에 N개의 선분들이 살고 있다. N개의 선분들은 서로 친구 관계를 맺기 시작했다.
선분들 중 오직 영역이 겹치는 선분끼리만 대화를 할 수 있었기 때문에 이들끼리만 친구가 되었다. 위 그림
을 참고하면 브라운과 코니는 친구가 되었고 문과 제임스도 친구가 되었지만 브라운과 샐리는 친구가 되지
못했다.
N개의 선분들은 갑자기 자신들이 얼마나 가까운 사이인지 확인해보려고 한다. 문과 레너드는 친구가 아니지
만, 제임스가 문과 레너드와 친하므로 문은 레너드의 친구의 친구이다. 비슷하게, 브라운은 샐리의 친구의 친
구의 친구의 친구이다. 일반적인 친구 관계를 1만큼 가깝다고 하면, 문과 레너드는 2만큼 가깝고, 브라운과
샐리는 4만큼 가깝다. 문은 코니의 친구의 친구지만, 코니의 친구이기도 하므로 문과 코니는 1만큼 가깝다.
선분 마을의 시장인 당신은, 두 명의 선분이 ‘우리가 얼마나 가까운 사이야?’라고 물어볼 때마다 바로 ‘너희
둘은 OO만큼 가까워’라고 답해야 한다. 당신은 이 업무를 자동화해서 수행해주는 프로그램을 작성해야 한다.
입력 (stdin)
첫째 줄에 선분의 수 N이 주어진다.
둘째 줄부터 N개의 줄에 1~N번 선분의 왼쪽 끝 좌표 Li와 오른쪽 끝 좌표 Ri가 주어진다.
(-1,000,000 ≤ Li ≤ Ri ≤ 1,000,000)
N+2번째 줄에는 질문의 수 Q가 주어진다.
N+3번째 줄부터 Q개의 줄에는 질문을 하는 두 선분의 번호 A, B가 주어진다. (1 ≤ A, B ≤ N, A ≠ B)
Small 문제에서는 2 ≤ N ≤ 300, 1 ≤ Q ≤ 300을 만족한다.
Large 문제에서는 2 ≤ N ≤ 150,000, 1 ≤ Q ≤ 150,000을 만족한다.
출력 (stdout)
Q개의 줄에 걸쳐 두 선분이 가까운 정도를 출력한다. 만약, 두 선분 사이의 친구 관계가 단절되었다면 -1을
출력한다.
10. 2017 고대경시
10. KUBC League
고려대학교 중앙 배드민턴 동아리 KUBC에서 정회원들을 대상으로 리그를 했다. 태양이를 포함해서 N명의 정
회원들이 리그에 참여했고, 총 N(N-1)/2번의 경기를 진행하였다. 그 결과 모든 경기가 승부가 나서 N명의 선
수들의 순위표가 만들어졌다.
태양 찬우 세찬 현수 한용
태양 L L W L
찬우 W L W W
세찬 W W W L
현수 L L L W
한용 W L W L
순위 선수 전적
1 찬우 3승 1패
1 세찬 3승 1패
3 한용 2승 2패
4 태양 1승 3패
4 현수 1승 3패
순위표를 본 현수는 절규하였다. ‘내가 공동 꼴지라고? 꼴지라니... 아니, 내가 꼴지라니! 이게 무슨 소리야!
아핡핡핡’ 이윽고 현수는 자기합리화를 하기 시작했다. ‘내가 한용이를 이겼고, 한용이는 세찬이를 이겼고, 세
찬이는 찬우를 이겼고, 찬우는 태양이를 이겼고... 그러니 내가 나머지 전부를 이겼네!’
현수와 마찬가지로 공동 꼴지인 태양이는 현수와 함께 자기합리화를 해보려고 하지만, 태양이는 나머지 4명
을 모두 이기는 방법이 생각이 나지 않는다. 태양이를 도와 꼬리를 무는 선수 나열을 만드는 프로그램을 작
성하여라.
입력 (stdin)
첫째 줄에 N이 주어진다.
둘째 줄부터 N개의 줄에는 N개의 정수가 주어지는데, p+1번째 줄의 q번째 수는 아래 규칙을 만족한다.
○ p번 선수가 q번 선수를 이겼으면 1.
○ p번 선수가 q번 선수에게 졌으면 0.
○ p = q인 경우 0.
단, 태양이는 1번 선수이다.
Small 문제에서는 2 ≤ N ≤ 20을 만족한다.
Large 문제에서는 2 ≤ N ≤ 2,000을 만족한다.
출력 (stdout)
첫 번째 줄에는 꼬리를 무는 선수 나열의 최대 길이 L을 출력한다.
두 번째 줄에는 꼬리를 무는 선수 나열 S1 S2 … SL을 출력한다. 꼬리를 무는 선수 나열은 다음과 같은 규칙
을 만족해야 한다.
○ S1 = 1
○ S1, S2, …, SL는 서로 다르다.
○ 모든 1 ≤ i ≤ L-1에 대해서 Si번 선수는 Si+1번 선수를 이겨야 한다. 다만, SL번 선수가 S1번 선수를 이
겨야 할 필요는 없다.