https://www.acmicpc.net/problem/2511
[문제]
[입력/출력]
package week2;
import java.util.Scanner;
public class No_2511 {
public static void main(String[] args) {
int aCard[] = new int[10];
int bCard[] = new int[10];
int aSum=0, bSum = 0;
Scanner scanner = new Scanner(System.in);
for(int i = 0 ; i < 10 ; i ++){
aCard[i] = scanner.nextInt();
}
for(int i = 0 ; i < 10 ; i ++){
bCard[i] = scanner.nextInt();
}
for( int i = 0 ; i < 10 ; i ++) {
if (aCard[i] > bCard[i]) {
aSum += 3;
} else if (bCard[i] > aCard[i]) {
bSum += 3;
} else {
aSum += 1;
bSum += 1;
}
}
System.out.println(aSum + " "+ bSum );
if(aSum > bSum){
System.out.println("A");
}
else if (bSum > aSum){
System.out.println("B");
}
else{
int i = 9;
while(aCard[i] == bCard[i]){
i--;
if(i == 0){
if(aCard[i] == bCard[i]){
System.out.println("D");
break;
}
}
}
if(aCard[i] > bCard[i]){
System.out.println("A");
}
else if(bCard[i] > aCard[i]){
System.out.println("B");
}
}
}
}
[풀이]
A,B의 카드배열을 각각 입력한 후 배열의 인덱스를 이용하여 게임의 규칙에 맞게 점수를 부여하였다.
그런데 문제에서 무승부의 조건이 A,B의 점수 합이 동일 할 때가 아니고 카드배열이 모두 동일할 때에만 한정하였음(문제를 제대로읽기)
따라서 A,B 점수 합이 동일할 경우 배열이 모두 동일하지 않다면 마지막 라운드부터 역방향으로 진행하여 이긴 사람을 찾아주면 된다. 즉, 마지막 라운드를 기준으로 먼저 이긴사람이 이겼다고 처리해주면된다. 이 경우 for 문보다 while문이 좀 더 간결하다고 생각하여 while문을 이용하였음
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 12780 원피스 (0) | 2023.01.16 |
---|---|
[백준/python] 9012 괄호 (0) | 2023.01.15 |
[백준/node.js]10773번 제로 (0) | 2023.01.15 |
[백준/Python] 14724번 관리자는 누구? (0) | 2023.01.15 |
[백준/Python] 12780번 원피스 (0) | 2023.01.15 |