[알고리즘] - 출전 순서 정하기

문제

Algospot - 출전 순서 정하기

풀이

Big

  1. 질 때는 크게 짐
  2. 이길때는 근소하게 이김

Detail

상대방 리스트의 것들 중 가장 큰 게

  1. 내것 가장 큰 것보다 큼 -> 제일 작은 것 매치
  2. 내것 가장 큰 것보다 같거나 작음 -> 제일 큰 것 매치

모순 체크

a b (a>b)
c d (c>d)
c>a

2. 내것 가장 큰 것보다 같거나 작음 -> 제일 큰 것 매치

a vs c : +1

if b > d : +0

if b < d : +1

2. 내것 가장 큰 것보다 같거나 작음 -> 제일 큰 것 매치하지 않음

a vs d : +0

b vs c : +1

=> 모순

Code

winCountArr = []
teamA = []
teamB = []

test = int(input())

for i in range(test):

    teamA.clear()
    teamB.clear()
    winCount = 0

    teamNum = int(input())
    teamA = list(map(int, input().split()))
    teamB = list(map(int, input().split()))

    for i in range(teamNum):
        # 상대방 리스트의 것들 중 가장 큰 게
        # 1. 내것 가장 큰 것보다 큼 -> 제일 작은 것 매치
        if max(teamA) > max(teamB):
            winCount += 0
            teamA.remove(max(teamA))
            teamB.remove(min(teamB))
        # 내것 가장 큰 것보다 같거나 작음 -> 제일 큰 것 매치
        else:
            winCount += 1
            teamA.remove(max(teamA))
            teamB.remove(max(teamB))

    # print(winCount)
    winCountArr.append(winCount)

for i in winCountArr:
    print(i)

결과

좋은 웹페이지 즐겨찾기