1. 문제

1270번: 전쟁 - 땅따먹기



2. 개요

지역의 수 N과 각 지역별로 지역 내의 모든 병사들의 국적이 주어진다.

지역 내에 한 국적의 병사가 과반수 이상이라면 이 지역은 해당 국가가 점령하게 된다.

각 지역의 점령 여부 및 점령 국가를 출력하는 문제.



3. 풀이 및 코드

3-1. 풀이

지역마다 딕셔너리를 이용해 수를 카운팅하고 이게 과반수 이상이라면 해당 숫자를 출력해준다.

C#으로 풀면 뭘 어떻게 해도 메모리 초과가 걸려서 일단 포기..

3-2. Python

import sys

n = int(sys.stdin.readline())

for i in range(n):
    info = list(map(int, sys.stdin.readline().split()))

    majority = info[0] / 2
    landinfo = dict()
    isdominated = False

    for j in range(1, info[0] + 1):
        if info[j] in landinfo:
            landinfo[info[j]] += 1

        else:
            landinfo[info[j]] = 1

        if landinfo[info[j]] > majority:
            isdominated = True
            print(info[j])
            break
    
    if isdominated == False:
        print("SYJKGW")

Comments