[백준] 27172 - 수 나누기 게임 (G5)

2023. 11. 6. 20:57·알고리즘 (PS)/BOJ
반응형

https://www.acmicpc.net/problem/27172

 

27172번: 수 나누기 게임

《보드게임컵》을 준비하다 지친 은하는 보드게임컵 참가자들을 경기장에 몰아넣고 결투를 시키는 게임 《수 나누기 게임》을 만들었습니다. 《수 나누기 게임》의 규칙은 다음과 같습니다.

www.acmicpc.net

 

에라토스테네스의 체를 구하는 과정을 응용하여 푸는 문제이다.

수가 10만개 이므로, 임의 두 수의 쌍을 모두 구해서 대결을 시키는 것은 시간내에 풀 수 없다.

 

1. 미리 1부터 100만까지 모든 수에 대한 점수를 저장할 리스트를 만들어 두고, None으로 초기화를 시켜둔다.

(점수가 음수가 될 수 있기 때문이다)

 

2. 플레이어가 가진 수로 주어진 모든 수에 대해 점수를 0으로 설정한다.

 

3. 각 플레이어의 수에 대해 에라토스테네스의 체를 구하듯, 그 수의 모든 배수에 대해 None이 아니라면(그 수를 가진 플레이어가 존재한다면), 자신의 수가 이겼으니 +1, 상대 수에 대해 -1 을 설정한다.

 

점수 결과를 출력한다.

 

l = [None for _ in range(1000001)]
n = int(input())
nums = list(map(int, input().split()))
for num in nums:
    l[num] = 0

for num in nums:
    for j in range(num, 1000001, num):
        if l[j] is not None:
            l[j] -= 1
            l[num] += 1

print(*[l[num] for num in nums])

 

풀이는 간단한데, 에라토스테네스의 체로 풀어야겠다는 생각을 하기가 쉽지는 않을 수도 있겠다는 생각이 든다.

알고리즘 분류를 봐도 조금 고민을 하게 했던 문제.

풀고나니까 에라토스테네스의 체 구현을 응용하는 아이디어가 너무 돋보여서 신박했다.

Solved.ac 클래스 문제에 있는 이유가 있는 것 같다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘 (PS) > BOJ' 카테고리의 다른 글

[백준] 3653 - 영화수집 (P4)  (0) 2023.11.17
[백준] 2243 - 사탕상자 (P5)  (0) 2023.11.16
[백준] 30105 - 아즈버의 이빨 자국 (G5)  (0) 2023.10.31
[백준] 2629 - 양팔저울 (G3)  (0) 2023.10.28
[백준] 9370 - 미확인 도착지 (G2)  (0) 2023.10.02
'알고리즘 (PS)/BOJ' 카테고리의 다른 글
  • [백준] 3653 - 영화수집 (P4)
  • [백준] 2243 - 사탕상자 (P5)
  • [백준] 30105 - 아즈버의 이빨 자국 (G5)
  • [백준] 2629 - 양팔저울 (G3)
에버듀
에버듀
개발은 좋은데 뭘로 개발할까
  • 에버듀
    Blog. 에버듀
    에버듀
  • 전체
    오늘
    어제
    • 분류 전체보기 (614)
      • 개인 프로젝트 (43)
        • 토이 프로젝트 (3)
        • [2020] 카카오톡 봇 (9)
        • [2021] 코드악보 공유APP (22)
        • [2022] 유튜브 뮤직 클론코딩 (9)
        • [2025] 한글 SQL 데이터베이스 (0)
      • 팀 프로젝트 (22)
        • [2020] 인공지능 숫자야구 (4)
        • [2022] OSAM 온라인 해커톤 (10)
        • [2024] GDSC 프로젝트 트랙 (6)
        • [2025] 큰소리 웹 페이지 (2)
      • CS (335)
        • 자료구조 (19)
        • 어셈블리 (41)
        • 멀티미디어응용수학 (7)
        • 컴퓨터 구조 (29)
        • 알고리즘 분석 (4)
        • 컴퓨터 네트워크 (38)
        • 프로그래밍언어론 (15)
        • HCI 윈도우즈프로그래밍 (26)
        • 기초데이터베이스 (29)
        • 운영체제 (23)
        • 오토마타 (24)
        • 문제해결기법 (11)
        • 블록체인 (22)
        • 소프트웨어공학 (21)
        • 기계학습심화 (12)
        • 컴퓨터그래픽스와 메타버스 (8)
        • 분산시스템특론 (6)
      • 자기계발 (44)
        • 생각 정리 (22)
        • 대외활동 (11)
        • 동아리 (7)
        • 자격증 (3)
        • 머니 스터디 (1)
      • 알고리즘 (PS) (107)
        • BOJ (101)
        • Programmers (5)
        • 알고리즘 이모저모 (1)
      • WEB(BE) (8)
        • express.js (1)
        • Spring & Spring Boot (7)
      • WEB(FE) (2)
        • html, css, js (1)
        • React.js (1)
      • Tool & Language (6)
        • Edit Plus (1)
        • Git (1)
        • Python3 (2)
        • Java (2)
      • Infra (12)
        • AWS (1)
        • Oracle Cloud (8)
        • Firebase (2)
        • Network (1)
      • Android (18)
        • Java (6)
        • Flutter (12)
      • Window (2)
        • Visual Studio 없이 WPF (1)
        • MFC (1)
      • 독서 (14)
        • Inside Javascript (7)
        • Database Internals (6)
        • 한 글 후기 (1)
  • 링크

    • github
    • website
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
에버듀
[백준] 27172 - 수 나누기 게임 (G5)
상단으로

티스토리툴바