대회 정보: https://www.acmicpc.net/contest/view/303
문제 목록: 추가 예정
출제 및 검수 : jh05013, junie, messi, wookje
문제 | A | B | C | D | E |
---|---|---|---|---|---|
출제자 | wookje | junie | jh05013 | jh05013 | wookje |
A. 엔드게임 스포일러
풀이
문제 지문 내에 정답의 영문 표기가 적혀 있으므로 출력하면 된다.
코드
#include <cstdio>
int main(){
puts("Avengers: Endgame");
return 0;
}
B. 귀여운 수~ε٩(๑> ₃ <)۶з
풀이
주어진 정수의 각 자릿수가 등차수열을 이루는지 판별하면 된다.
코드
#include <bits/stdc++.h>
using namespace std;
string n;
int main() {
cin >> n;
for (int i=2; i<n.size(); i++) {
if (n[i] - n[i-1] != n[i-1] - n[i-2]) {
cout << "흥칫뿡!! <( ̄ ﹌  ̄)>";
return 0;
}
}
cout << "◝(⑅•ᴗ•⑅)◜..°♡ 뀌요미!!";
return 0;
}
#coding: utf-8
s = list(map(int,input()))
if len(s) == 1:
print("◝(⑅•ᴗ•⑅)◜..°♡ 뀌요미!!")
exit()
d = s[1] - s[0]
for i in range(len(s)-1):
if s[i]+d != s[i+1]: print("흥칫뿡!! <( ̄ ﹌  ̄)>"); break
else: print("◝(⑅•ᴗ•⑅)◜..°♡ 뀌요미!!")
C. 맥주 99병
풀이
주어진 규칙에 맞게 문자열을 출력하면 된다.
N=1인 경우의 예외에 주의하자.
코드
#include <bits/stdc++.h>
using namespace std;
int n;
int main() {
cin >> n;
for (int i = n; i >= 3; i--) {
cout << i << " bottles of beer on the wall, " << i << " bottles of beer.\n";
cout << "Take one down and pass it around, " << i-1 << " bottles of beer on the wall.\n\n";
}
if (n >= 2) {
cout << "2 bottles of beer on the wall, 2 bottles of beer.\nTake one down and pass it around, 1 bottle of beer on the wall.\n\n";
}
if (n >= 1) {
cout << "1 bottle of beer on the wall, 1 bottle of beer.\nTake one down and pass it around, no more bottles of beer on the wall.\n\n";
}
if (n != 1) {
cout << "No more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, " << n << " bottles of beer on the wall.";
}
else {
cout << "No more bottles of beer on the wall, no more bottles of beer.\nGo to the store and buy some more, " << n << " bottle of beer on the wall.";
}
return 0;
}
c = lambda n: str(n) if n else "no more"
s = lambda n: '' if n==1 else 's'
n = int(input())
for i in range(n, 0, -1):
print(f"{c(i).capitalize()} bottle{s(i)} of beer on the wall, {c(i)} bottle{s(i)} of beer.")
print(f"Take one down and pass it around, {c(i-1)} bottle{s(i-1)} of beer on the wall.")
print()
print("No more bottles of beer on the wall, no more bottles of beer.")
print(f"Go to the store and buy some more, {c(n)} bottle{s(n)} of beer on the wall.")
D. But can you do it in 0.5x A presses?
풀이
0000 : But can you do it in 0.5x A presses?
test
코드
#include <bits/stdc++.h>
using namespace std;
int n, dap;
int main() {
cin >> n;
for (int i = 0, flag = 0; i < n; i++) {
double x; cin >> x;
dap += (int)x;
flag += (x != 0);
if (flag == 1 && (int)(x*10)%10 == 5) dap++;
}
cout << dap;
return 0;
}
n = int(input())
L = [round(float(x)*10) for x in input().split() if x != '0'] + [0]
print((L[0]+5)//10 + sum(x//10 for x in L[1:]))
E. Messi Gimossi
풀이
test
코드
#include <bits/stdc++.h>
using namespace std;
int n, m;
int f[44] = { 0,5,13 };
string s = "Messi Gimossi";
int main() {
cin >> m; m--;
int a = 1, b = 1, c;
for (int i = 3; i <= 40; i++) {
f[i] = f[i-1]+f[i-2]+1;
}
for (int i = 40; i >= 2; i--) {
if (m >= f[i]) m -= (f[i]+1);
}
if (m == 5 || m == -1) cout << "Messi Messi Gimossi";
else cout << s[m];
return 0;
}
lens = [5, 13]
while lens[-1] <= 2**30: lens.append(lens[-1]+lens[-2]+1)
def messi(m, depth):
if depth <= 1: return "Messi Gimossi"[m]
if lens[depth-1] > m: return messi(m, depth-1)
m-= lens[depth-1]
if m == 0: return ' '
m-= 1
return messi(m, depth-2)
c = messi(int(input())-1, 39)
print(c if c != ' ' else "Messi Messi Gimossi")
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, wookje, 욱제, 메시, messi, 풀이, 선린, 선린인터넷고등학교, sunrin, 문제 풀이, 제3회 천하제일 코딩대회, 예선