[Python] 백준/BOJ 1270번: 전쟁 - 땅따먹기 (Silver 3)

2025. 7. 28. 00:33·Algorithm/백준 (BOJ)
반응형

💻 Problem

문제 보러 가기

 

드디어 전쟁은 전면전이 시작되었고, 서로 땅을 따먹기 시작했다.

현재 여러 지역은 한창 전쟁이 벌어지고 있는 상황인데, 어느 지역은 거의 전쟁이 마무리 단계로 가고 있다.

하지만 당신은 군대를 보낼 때 적군을 혼란시키기 위해서 우리나라의 군대라는 걸 표시하지 않고, 군대의 번호로 표시했다.

어느 땅에서 한 번호의 군대의 병사가 절반을 초과한다면 그 땅은 그 번호의 군대의 지배하에 놓이게 된다.

이때, 각 땅들을 지배한 군대의 번호를 출력하여라. 만약, 아직 전쟁이 한창 중인 땅이라면 “SYJKGW”을 쌍 따옴표 없이 출력한다.

 

💡 Approach

파이썬의 Counter를 활용해 각 군대 번호가 몇 번 등장하는지 센다.

가장 많이 등장한 군대의 횟수가 과반수를 넘으면 해당 군대 번호를 출력한다.

과반수를 넘지 않으면 “SYJKGW”를 출력한다.

 

army = max(Counter(ground[1:]).items(), key=lambda x:x[1])

처음에는 max()의 key를 활용해서 value를 기준으로 가장 큰 값을 구했다.

 

army = Counter(ground[1:]).most_common(1)[0]

max()가 아니라 most_common()을 쓰는 방법도 있었다.

Counter 모듈에는 most_common()이 존재하는데 이를 활용하면 최빈값을 구할 수 있다고 한다.

 

✏️ Solution

import sys
from collections import Counter
input = sys.stdin.readline

for _ in range(int(input())):
    ground = list(map(int, input().split()))
    army = Counter(ground[1:]).most_common(1)[0]
    print(army[0] if army[1] > ground[0] // 2 else 'SYJKGW')

 ⏱️ 시간복잡도

  • 땅의 개수: n (n <= 200)
  • 각 땅의 병사 수: Ti (Ti <= 100,000)
  1. n: 땅의 개수 최대 200
  2. Ti: 한 줄에 최대 100,000개의 군대
  3. Ti + Ti: 군대 번호들에 대해 빈도 계산 + 최빈값 찾기

시간복잡도는 Ti의 합이지만 최악의 경우는 n * Ti가 된다.

200 * 100,000 = 2 * 10^7

 

반응형

'Algorithm > 백준 (BOJ)' 카테고리의 다른 글

[Python] 백준/BOJ 6219번: 소수의 자격 (Silver 3)  (0) 2025.08.03
[Python] 백준/BOJ 2784번: 가로 세로 퍼즐 (Silver 2)  (0) 2025.08.02
[Python] 백준/BOJ 1715번: 카드 정렬하기 (Gold 4)  (0) 2025.07.24
[Python] 백준/BOJ 1515번: 수 이어 쓰기 (Silver 3)  (0) 2025.07.19
'Algorithm/백준 (BOJ)' 카테고리의 다른 글
  • [Python] 백준/BOJ 6219번: 소수의 자격 (Silver 3)
  • [Python] 백준/BOJ 2784번: 가로 세로 퍼즐 (Silver 2)
  • [Python] 백준/BOJ 1715번: 카드 정렬하기 (Gold 4)
  • [Python] 백준/BOJ 1515번: 수 이어 쓰기 (Silver 3)
올콩
올콩
콩 심은 데 콩 난다
  • 올콩
    콩스토리
    올콩
  • 전체
    오늘
    어제
    • 분류 전체보기 (196) N
      • SSAFY (10)
      • Algorithm (114) N
        • 이론 (6)
        • 백준 (BOJ) (107) N
        • 프로그래머스 (1)
      • Trouble Shooting (9)
      • Frontend (6)
      • React (17)
      • Next.js (4)
      • Vue (4)
      • Node.js (2)
      • HTML (9)
      • DevOps (4)
        • Git (4)
      • Language (9)
        • JavaScript (0)
        • Java (9)
      • Embedded (1)
      • CS (5)
        • Network (1)
        • Blockchain (4)
      • 자격증 (2)
  • 블로그 메뉴

    • GitHub
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    DP
    React
    SSAFYcial
    싸피
    브루트포스
    Heap
    구현
    Java
    강의
    파이썬
    오블완
    중복조합
    순열
    알고리즘
    우선순위큐
    SSAFY
    백트래킹
    중복순열
    bfs
    Algorithm
    블록체인
    재귀
    html5
    Next.js
    Error
    수학
    dfs
    백준
    힙
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
올콩
[Python] 백준/BOJ 1270번: 전쟁 - 땅따먹기 (Silver 3)
상단으로

티스토리툴바