Odd or Even 성공다국어
3 초 | 128 MB | 27 | 25 | 22 | 91.667% |
문제
There are several versions of Odd or Even, a game played by competitors to decide random issues (such as “who will code this problem?”). In one of the versions, for two players, the game starts with each player calling either odds or evens. Then they count to three (some people chant “Once, twice, three, SHOOT!”). On three, both players hold out one of their hands, showing a number of fingers (from zero to five). If the fingers add to an even number, then the person who called evens wins. If the fingers add to an odd number, then the person who called odds wins.
John and Mary played several games of Odd or Even. In every game John chose odds (and, consequently, Mary chose evens). During the games each player wrote down, in small cards, how many fingers he/she showed, using one card for each game – Mary used blue cards, John used red cards. Their objective was to be able to re-check the results later, looking at the cards for each game. However, at the end of the day John dropped the deck of cards, and although they could separate the cards by color, they are now out of order.
Given the set of numbers written on red cards and on blue cards, you must write a program to determine the minimum number of games that Mary certainly won.
입력
The input contains several test cases. The first line of a test case contains an integer N representing the number of games played (1 ≤ N ≤ 100). The second line of a test case contains N integers Xi, indicating the number of fingers shown by Mary in each of the games (0 ≤ Xi ≤ 5, for 1 ≤ i ≤ N). The third line of a test case contains N integers Yi, indicating the number of fingers shown by John in each of the games (0 ≤ Yi ≤ 5, for 1 ≤ i ≤ N). The end of input is indicated by N = 0.
출력
For each test case your program must write one line, containing one integer, indicating the minimum number of games that Mary certainly won.
문제가 이해가 안돼서 한참동안 헤맸다.
늦은시간에 유성님께 도움을 부탁해서 실마리를 찾았다.
(유성님 감사합니다. 꾸벅.)
간단하게 정리하면,
존은 홀수 , 메리는 짝수일때 승리한다.
그리고 메리가 가장 적게 이길 경우의수를
구하는 것이다.
테스트 케이스를 보면
1 0 4 짝수 2개 홀수 1개
3 1 2 짝수 1개 홀수 2개
최악의 경우를 구하면
1 0 4
2 1 3
더 했을때 값이 모두 홀수가 되는 것이다.
그러므로 메리가 승리할 수 없다.
이를 통해서,
메리의 짝수 <->존의 홀수
메리의 홀수 <->존의 짝수 으로
매칭이된다.
나머지 테케로 예를 들면,
0 2 2 4 2 1 2 0 4 짝수 8 홀수 1
1 2 3 4 5 0 1 2 3 짝수 4 홀수 5
메리의 짝수와 존의 홀수가 매칭이 되므로
8-5 = 3
메리의 홀수와 존의 짝수가 매칭이 되므로
4-1 = 3
이제 메리 짝수 3개 , 존 짝수 3개가 남았으므로, 짝수 + 짝수 = 짝수 이기때문에
적어도, 메리는 이경우에는 꼭 이겨야한다.
import sys
while True:
a = int(input())
merry_odd=0
merry_even =0
john_odd=0
john_even =0
if a == 0:
break
else:
merry = list(map(int,input().split()))
john = list(map(int,input().split()))
for i in merry:
if i % 2 ==0:
merry_even +=1
else:
merry_odd += 1
for i in john:
if i % 2 ==0:
john_even += 1
else:
john_odd += 1
print(abs(merry_even-john_odd))
# 설명에는 메리의 짝수 <->존의 홀수
# 메리의 홀수 <->존의 짝수 으로 매칭 한다고 했는데,
# 결국 메리의 짝수 <->존의 홀수 과
# 메리의 홀수 <->존의 짝수 매칭되어 뺀값이 같으므로 하나만 구함.
'잡동사니' 카테고리의 다른 글
HeroKu 오류 (0) | 2022.01.16 |
---|---|
컴퓨터 소리가 안날때 (0) | 2022.01.15 |
움짤 만드는법 (0) | 2021.12.30 |
티스토리 글씨체, 글자 크기 변경하는 방법. (0) | 2021.12.28 |
유데미 한글 자막 보는 방법 (0) | 2021.12.28 |