Computer Science&Engineering/코딩테스트
[ 백준 17281 ] ⚾ 야구 구현 문제
EDDO
2021. 4. 20. 00:10
# 문제링크
17281번: ⚾
⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종
www.acmicpc.net
DFS로 타자들의 순서를 정하고, 시뮬레이션을 돌려주었습니다. 그냥 뭐 생각할 것도 없고, if 문 여러 개 해서 조건만 맞추어서 돌려주었습니다. 시뮬레이션 문제는 진짜 문제 꼼꼼하게 읽고 그대로! 코드로 구현하는 게 중요한 거 같아요..
# 제출 코드
#include <cstdio>
using namespace std;
int N;
int order[10];
int map[51][10];
bool chk[10];
int ans = 0;
/*
안타: 1
2루타: 2
3루타: 3
홈런: 4
아웃: 0
*/
void Input() {
scanf("%d", &N);
for (int i = 0; i < N; i++) {
for (int j = 1; j <= 9; j++) { // 1번부터 9번
scanf("%d", &map[i][j]);
}
}
}
int Get_num() {
int num = 0; // 이닝 번호
int i = 1; // 현재 순서
int cur = order[1]; // 현재 선수
int score = 0; // 점수
int out = 0;
int ru[4] = { 0, };
while (num < N) {
if (map[num][cur] == 0) out++; // 아웃
else if (map[num][cur] == 1) { // 안타
if (ru[3] == 1) { score++; ru[3] = 0; }
if (ru[2] == 1) { ru[3] = 1; ru[2] = 0; }
if (ru[1] == 1) ru[2] = 1;
ru[1] = 1;
}
else if (map[num][cur] == 2) { // 2루타
if (ru[3] == 1) { score++; ru[3] = 0; }
if (ru[2] == 1) { score++; ru[2] = 0; }
if (ru[1] == 1) { ru[3] = 1; ru[1] = 0; }
ru[2] = 1;
}
else if (map[num][cur] == 3) { //3루타
if (ru[3] == 1) { score++; ru[3] = 0; }
if (ru[2] == 1) { score++; ru[2] = 0; }
if (ru[1] == 1) { score++;; ru[1] = 0; }
ru[3] = 1;
}
else { //홈런
if (ru[3] == 1) { score++; ru[3] = 0; }
if (ru[2] == 1) { score++; ru[2] = 0; }
if (ru[1] == 1) { score++;; ru[1] = 0; }
score++; // 타자도 득점~!
}
if (out == 3) { // 이닝 변경
num++; out = 0;
ru[1] = ru[2] = ru[3] = 0;
}
i = (i == 9) ? 1 : i+1; // 다음 타자 등판~!
cur = order[i];
}
return score;
}
void DFS(int node) {
if (node == 10) {
int ret = Get_num();
if (ret > ans) ans = ret;
return;
}
for (int i = 2; i < 10; i++) {
if (chk[i] == true)continue;
chk[i] = true;
order[node] = i;
if (node == 3) DFS(node + 2);
else DFS(node + 1);
chk[i] = false;
order[node] = 0;
}
}
int main() {
//freopen("sample_input.txt", "r", stdin);
Input();
order[4] = 1; // 4번 타자는 1로 정해짐
DFS(1);
printf("%d\n", ans);
}
채점 시간이 너무 오래걸려서 긴장되었던..ㅎㅎ
반응형