[백준] 풍선 터트리기 - Java 32377

2024. 10. 2. 22:15·PS/백준

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

 

 

 

우선, 입력값인 x, y, z의 값이 굉장히 크기 때문에 `이분 탐색`으로 접근해야 된다는 생각이 들었다.

(그리고 시간 제한이 0.5초이다)

 

그래서 내가 생각한 키 포인트는 x, y, z에 따른 N번째 풍선을 터트리는 순간을 이분 탐색으로 찾아야 된다고 생각했다.

 

그리고 동시에 두 명 이상이 풍선을 터트리는 경우 A, B, C 순서대로 터트리기 때문에

N번째 풍선을 터트리는 순간의 `-1`초를 해주고 반복문을 돌며 나누어 떨어지는 값을 출력했다.

 

import java.io.*;
import java.util.StringTokenizer;

public class BOJ32377 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken()); 

        long[] arr = new long[3]; 
        long max = 0; 

        
        for (int i = 0; i < 3; i++) {
            arr[i] = Long.parseLong(st.nextToken());
            max = Math.max(arr[i], max); 
        }

        long left = 1;
        long right = max * N; 

        
        while (left <= right) {
            long mid = (left + right) / 2;

            long count = 0;
            for (int i = 0; i < 3; i++) {
                count += (mid / arr[i]); 
            }

            if (count >= N) {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }

        long preCount = 0;
        for (int i = 0; i < 3; i++) {
            preCount += ((left - 1) / arr[i]);
        }

        for (int i = 0; i < 3; i++) {
            if (left % arr[i] == 0) {
                preCount++;
                if (preCount == N) { 
                    if (i == 0) {
                        System.out.println("A win");
                    } else if (i == 1) {
                        System.out.println("B win");
                    } else {
                        System.out.println("C win");
                    }
                    break;
                }
            }
        }
    }
}

 

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

'PS > 백준' 카테고리의 다른 글

[백준] 램프 - Java 1034  (0) 2024.10.10
[백준] 센티와 마법의 뿅망치 - Java 19683  (0) 2024.10.10
[백준] 두수의 합 - Java 9024  (0) 2024.10.02
[백준] 진우의 민트초코우유 - Java 20208  (2) 2024.09.29
[백준] 다이어트 - Java 19942  (0) 2024.09.28
'PS/백준' 카테고리의 다른 글
  • [백준] 램프 - Java 1034
  • [백준] 센티와 마법의 뿅망치 - Java 19683
  • [백준] 두수의 합 - Java 9024
  • [백준] 진우의 민트초코우유 - Java 20208
진꿈청
진꿈청
기록하는 개발자가 되기를 희망하는 진꿈청입니다. 사소한 개발 일지도 기록하기 위해 노력하겠습니다
  • 진꿈청
    기록형 개발자 희망
    진꿈청
  • 전체
    오늘
    어제
    • 분류 전체보기 (379)
      • 개발 기록 (140)
      • Language (12)
        • Java (4)
        • Python (0)
        • Kotlin (8)
      • Spring (51)
        • JPA (9)
        • AOP (1)
        • Batch (1)
        • Cloud (4)
        • WebSocket (11)
        • 유용한 정보 (9)
        • 동시성 & Lock (7)
        • Test (7)
      • DevOps (3)
        • AWS (3)
      • Docker (7)
      • Git (1)
      • PS (53)
        • 프로그래머스 (16)
        • 백준 (36)
        • goorm (1)
      • 프로젝트 (39)
        • 토이 프로젝트 (9)
        • FitTrip (16)
        • StudyWithMe (14)
      • Ceph (3)
      • CS (10)
        • Network (6)
        • OS (4)
      • Design Pattern (8)
      • Infra (40)
        • Jenkins (13)
        • DevOps (7)
        • Kubernetes (10)
        • NGINX (4)
        • Flyway (1)
        • Kafka (1)
      • DB (7)
        • Redis (5)
        • MongoDB (1)
        • PostgreSQL (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    nginx
    Kafka
    spring rest docs
    Spring
    Spring JPA
    flyway
    springboot
    백준
    fittrip
    디자인 패턴
    kotlin
    프로그래머스
    k8s
    openfeign
    ansible
    ApplicationEventPublisher
    docker
    AWS EC2
    김영한
    Spring cloud
    JPA
    websocket
    Spring Cloud Gateway
    Redis
    @Transactional
    Github Actions
    Jenkins
    Design Pattern
    java
    Kubernetes
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
진꿈청
[백준] 풍선 터트리기 - Java 32377
상단으로

티스토리툴바