728x90
Olympiad > 한국정보올림피아드 > KOI 2012 > 초등부 1번
배열 하나와 변수 하나만 이용해서 풀어보았다.
배열 0~9번 방에는 각 라운드의 점수를 담고,
10번 방에는 각 라운드의 승점의 누적합을 담았다.
그리고 무승부일 경우를 위해 0번 방부터 누적합을 구하며
가장 뒷부분의 라운드 결과를 sw변수에 담아주었다.
//입력 부분
for (int i = 0; i < 10; i++)
cin >> arr[0][i];
for (int i = 0; i < 10; i++)
cin >> arr[1][i];
//처리 부분
for (int i = 0; i < 10; i++){
if (arr[0][i] > arr[1][i]) {
arr[0][10] += WIN; // 누적합을 구한다.
sw = 1; // 라운드 뒷부분의 결과를 담는다.
}
else if (arr[0][i] < arr[1][i]) {
arr[1][10] += WIN;
sw = 2;
}
else {
arr[0][10]++;
arr[1][10]++;
}
}
//출력 부분
cout << arr[0][10] << ' ' << arr[1][10] << '\n'; //각 점수를 일단 출력한다.
if (arr[0][10] != arr[1][10]){
if (arr[0][10] > arr[1][10]) cout << 'A';
else cout << 'B';
}
else{ //둘의 점수가 같을 때 아까의 sw변수(마지막 승패 결과)를 이용해 구분하여 출력한다.
if (sw == 1) cout << 'A';
else if (sw == 2) cout << 'B';
else cout << 'D';
}
//전체 코드
#include <iostream>
#define WIN 3
using namespace std;
int main() {
int arr[2][11]{}, sw = 0;
for (int i = 0; i < 10; i++)
cin >> arr[0][i];
for (int i = 0; i < 10; i++)
cin >> arr[1][i];
for (int i = 0; i < 10; i++){
if (arr[0][i] > arr[1][i]) {
arr[0][10] += WIN;
sw = 1;
}
else if (arr[0][i] < arr[1][i]) {
arr[1][10] += WIN;
sw = 2;
}
else {
arr[0][10]++;
arr[1][10]++;
}
}
cout << arr[0][10] << ' ' << arr[1][10] << '\n';
if (arr[0][10] != arr[1][10]){
if (arr[0][10] > arr[1][10]) cout << 'A';
else cout << 'B';
}
else{
if (sw == 1) cout << 'A';
else if (sw == 2) cout << 'B';
else cout << 'D';
}
}
선언부분에서 배열 뒤에 {} 를 해주었는데 이것은 배열의 모든 방을 0으로 초기화시켜주기 위함이다.
728x90
댓글