# 문제
# 입력 및 출력
# 풀이
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("bowling.inp");
ofstream fout("bowling.out");
int input(int frame[10][2]) {
int bonus = 0;
for (int i = 0; i < 9; i++) {
fin >> frame[i][0];
if (frame[i][0] == 10)continue;
fin >> frame[i][1];
}
fin >> frame[9][0] >> frame[9][1];
if (frame[9][0] + frame[9][1] >= 10) fin >> bonus;
return bonus;
}
int strike(int frame[10][2],int n) {
int bonus = 0;
bonus += frame[n + 1][0] + frame[n + 1][1];
if (n + 2 < 10 && frame[n + 1][0] == 10) bonus += frame[n + 2][0];
return bonus;
}
int spare(int frame[10][2], int n) {
int bonus = 0;
bonus += frame[n + 1][0];
return bonus;
}
int main() {
int T;
fin >> T;
while (T--) {
int frame[10][2] = { 0, }, bonus = 0, score = 0;
bonus=input(frame);
for (int i = 0; i < 9; i++) {
score += (frame[i][0] + frame[i][1]);
// 보너스 점수 계산
if (frame[i][0] == 10) score += strike(frame, i);
else if (frame[i][0] + frame[i][1] == 10) score += spare(frame, i);
}
score += (frame[9][0] + frame[9][1] + bonus);
fout << score << "\n";
}
fin.close();
fout.close();
}
처음에 풀었을 땐 머릿속에 정리가 안돼서 엄청 복잡하게 풀었는데
너무 코드가 난잡해서 지우고 다시 한번 작성하면서 정리가 좀 됐다
핵심을 파악하고 조건문은 필요할때만 쓰자,,!
'Algorithm > 🏫assignment' 카테고리의 다른 글
# Interesting Gain (0) | 2022.09.11 |
---|---|
# 계단 오르기 (0) | 2022.09.09 |
# Spin And Slide (0) | 2022.09.04 |
# Test (0) | 2022.09.03 |
# 교차점 계산 (0) | 2022.07.04 |
댓글