문제
우리나라 고유의 윷놀이는 네 개의 윷짝을 던져서 배(0)와 등(1)이 나오는 숫자를 세어 도, 개, 걸, 윷, 모를 결정한다. 네 개 윷짝을 던져서 나온 각 윷짝의 배 혹은 등 정보가 주어질 때 도(배 한 개, 등 세 개), 개(배 두 개, 등 두 개), 걸(배 세 개, 등 한 개), 윷(배 네 개), 모(등 네 개) 중 어떤 것인지를 결정하는 프로그램을 작성하라.
입력
첫째 줄부터 셋째 줄까지 각 줄에 각각 한 번 던진 윷짝들의 상태를 나타내는 네 개의 정수(0 또는 1)가 빈칸을 사이에 두고 주어진다.
출력
첫째 줄부터 셋째 줄까지 한 줄에 하나씩 결과를 도는 A, 개는 B, 걸은 C, 윷은 D, 모는 E로 출력한다.
출처
Olympiad > 한국정보올림피아드 > 한국정보올림피아드시․도지역본선 > 지역본선 2009 > 초등부 1번
알고리즘 분류
간단한 문제이다. 1이 몇개가 등장하였는지 카운트해서 조건문으로 해결할 수 있는 문제이다.
#include<stdio.h>
int main(){
int a[3][4];
char res[3];
int cnt;
for(int i = 0 ; i < 3; i++){
cnt = 0;
for(int j = 0 ; j < 4; j++){
scanf("%d",&a[i][j]);
if(a[i][j] == 1)
cnt++;
}
switch(cnt){
case 0:
res[i] = 'D';
break;
case 1:
res[i] = 'C';
break;
case 2:
res[i] = 'B';
break;
case 3:
res[i] = 'A';
break;
case 4:
res[i] = 'E';
break;
}
}
for(int i = 0 ; i < 3 ; i++)
printf("%c\n",res[i]);
}
이와 같은 쉬운 문제가 코딩테스트에서는 등장하기 어려울 것이다. 위에 보이는 것처럼 알고리즘의 문제 출처가 초등부 경진대회이다. 이 문제를 꼬아서 내려면 어떻게 해야할까 우리는 고민해봐야한다.
예를 들어, 윷놀이 전체 결과가 주어지고 A와 B 사람 중 누가 이겼는지 혹은 A 가 B를 몇번 따라잡거나 잡아먹었는지 정도를 계산하는 문제가 나왔다면 조건이 더 많아져서 훨씬 어려운 문제가 되었을 것이다.
또, 백도도 있고 엎어서 가는 경우도 있으니 이런 모든 경우의 수를 통제하려면 조건이 엄청 까다로운 문제일 것이다. 이런 문제를 가지고 직접 문제를 만들어봐서 풀어보는 것 역시 코딩 테스트에 큰 도움이 되기 때문에 한번 이런 방향으로 고민해보길 바랍니다.
다른 알고리즘 문제
2022.05.10 - [# 프로그래밍 개발/04. 알고리즘 문제풀이] - 백준 알고리즘 2480번 [주사위 세개] 문제풀이코드 공개
2022.04.28 - [# 프로그래밍 개발/04. 알고리즘 문제풀이] - 백준 알고리즘 9461번 [파도반 수열] 문제풀이코드 공개
2022.05.08 - [# 프로그래밍 개발/04. 알고리즘 문제풀이] - 백준 알고리즘 4796번 [캠핑] 문제 풀이 코드 공개 - 그리디 알고리즘