[๋ฐฑ์ค€ 20546 / Silver5] ๐Ÿœ ๊ธฐ์ ์˜ ๋งค๋งค๋ฒ• ๐Ÿœ - Java(์ž๋ฐ”)/Swift(์Šค์œ„ํ”„ํŠธ)

ํ† ๋ผ๊ตดยท2025๋…„ 5์›” 12์ผ

โ“๋ฌธ์ œ ์„ค๋ช…


์ž‘์„ฑ์ž : ๊น€๋ฏผ๊ทœ
๋ฌธ์ œ ๋งํฌ : https://www.acmicpc.net/problem/20546

  • "์˜ค๋Š˜๋„ ํ˜ธ์žฌ๋งŒ ์žˆ๊ฒŒ ํ•ด์ฃผ์„ธ์š”. ๋ฒ„ํ•-"
    2๋…„์ฐจ ๊ฐœ๋ฏธ ์ค€ํ˜„์ด๋Š” ์˜ค๋Š˜๋„ ๋ฒ„ํ•์‹ ์—๊ฒŒ ๊ธฐ๋„๋ฅผ ์˜ฌ๋ฆฐ๋‹ค. ์žฅ๊ธฐ ํˆฌ์ž๋ฅผ ์ง€ํ–ฅํ•˜๋Š” ์ค€ํ˜„์ด๋Š” ํ•œ ๋ฒˆ ์‚ฐ ์ฃผ์‹์€ ์ ˆ๋Œ€ ํŒ”์ง€ ์•Š๋Š”๋‹ค. 2099๋…„์ด ๋˜์–ด๋„ ์ฃผ์‹์„ ํŒ”์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ์ฃผ์‹ ๋งค์ˆ˜ ํ›„ ์˜ค๋กœ์ง€ ๊ธฐ๋„๋งŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ BNP ์ „๋žต์ด๋ผ๊ณ  ํ•œ๋‹ค. BNP๋Š” Buy and Pray์˜ ์•ฝ์ž์ด๋‹ค. ์ค€ํ˜„์ด๋Š” ์ฃผ์‹์„ ์‚ด ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฌด์กฐ๊ฑด ์ตœ๋Œ€ํ•œ ๋งŽ์ด ์‚ฐ๋‹ค. ์ค€ํ˜„์ด๋Š” ์š•์‹ฌ์Ÿ์ด์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ฃผ์‹์„ ์‚ด ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐ€๋Šฅํ•œ ๋งŒํผ ์ฆ‰์‹œ ๋งค์ˆ˜ํ•œ๋‹ค. ๋‹ค์Œ์€ ์ค€ํ˜„์ด๊ฐ€ ํ˜„๊ธˆ 100์›์œผ๋กœ A๊ธฐ์—…์˜ ์ฃผ์‹์„ ์‚ฌ๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
    "์ฃผ์‹์€ ํƒ€์ด๋ฐ์ด์ง€!"
    ๋ฐ˜๋ฉด, ์„ฑ๋ฏผ์ด๋Š” ์˜ค๋Š˜๋„ ์ฃผ์‹ ๊ฑฐ๋ž˜ย ํ”„๋กœ๊ทธ๋žจ์„ย ์‹คํ–‰ํ•œ๋‹ค. ๋ชจ๋‹ˆํ„ฐ 8๊ฐœ์—์„œ ๋ฟœ์–ด์ ธ ๋‚˜์˜ค๋Š” ํ™”๋ คํ•œ ์ฃผ์‹ ์ฐจํŠธ๊ฐ€ ์„ฑ๋ฏผ์ด๋ฅผ ๊ฐ์‹ผ๋‹ค. ์„ฑ๋ฏผ์ด๋Š” ์ฃผ์‹์ด ํƒ€์ด๋ฐ ์‹ธ์›€์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค. ์ „ํ˜•์ ์ธ ๋‹จ๊ธฐ ํˆฌ์ž์ž๋กœ ์ƒ๊ฐํ•˜๋ฉด ์˜ค์‚ฐ์ด๋‹ค. ์„ฑ๋ฏผ์ด๋งŒ์˜ ์ „๋žต์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฅธ๋ฐ” 33 ๋งค๋งค๋ฒ•์œผ๋กœ, ๊ทธ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ์˜ ์„ธย ๊ฐ€์ง€ ๋ฃฐ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค.
    • ๋ชจ๋“  ๊ฑฐ๋ž˜๋Š” ์ „๋Ÿ‰ ๋งค์ˆ˜์™€ ์ „๋Ÿ‰ ๋งค๋„๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ํ˜„์žฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ˜„๊ธˆ์ด 100์›์ด๊ณ ย ์ฃผ๊ฐ€๊ฐ€ 11์›์ด๋ผ๋ฉด 99์›์–ด์น˜์˜ ์ฃผ์‹์„ ๋งค์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‹จ, ํ˜„๊ธˆ์ด 100์› ์žˆ๊ณ  ์ฃผ๊ฐ€๊ฐ€ 101์›์ด๋ผ๋ฉด ์ฃผ์‹์„ ์‚ด ์ˆ˜ ์—†๋‹ค. ์„ฑ๋ฏผ์ด๋Š” ๋นš์„ ๋‚ด์„œ ์ฃผ์‹์„ ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.
    • 3์ผ ์—ฐ์†ย ๊ฐ€๊ฒฉ์ด ์ „์ผ ๋Œ€๋น„ ์ƒ์Šนํ•˜๋Š” ์ฃผ์‹์€ ๋‹ค์Œ๋‚  ๋ฌด์กฐ๊ฑด ๊ฐ€๊ฒฉ์ด ํ•˜๋ฝํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ˜„์žฌ ์†Œ์œ ํ•œ ์ฃผ์‹์˜ ๊ฐ€๊ฒฉ์ด 3์ผ์งธ ์ƒ์Šนํ•œ๋‹ค๋ฉด, ์ „๋Ÿ‰ ๋งค๋„ํ•œ๋‹ค. ์ „์ผ๊ณผ ์˜ค๋Š˜์˜ ์ฃผ๊ฐ€๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด ๊ฐ€๊ฒฉ์ด ์ƒ์Šนํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
    • 3์ผ ์—ฐ์†ย ๊ฐ€๊ฒฉ์ด ์ „์ผ ๋Œ€๋น„ ํ•˜๋ฝํ•˜๋Š” ์ฃผ์‹์€ ๋‹ค์Œ๋‚  ๋ฌด์กฐ๊ฑด ๊ฐ€๊ฒฉ์ด ์ƒ์Šนํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๊ฒฝํ–ฅ์ด ๋‚˜ํƒ€๋‚˜๋ฉด ์ฆ‰์‹œ ์ฃผ์‹์„ ์ „๋Ÿ‰ ๋งค์ˆ˜ํ•œ๋‹ค. ์ „์ผ๊ณผ ์˜ค๋Š˜์˜ ์ฃผ๊ฐ€๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด ๊ฐ€๊ฒฉ์ด ํ•˜๋ฝํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
      ์ค€ํ˜„์ด์™€ ์„ฑ๋ฏผ์ด๋Š”ย ๊ฐ์ž์˜ ๋งค๋งค๋ฒ• ์ค‘ ์–ด๋–ค ๋ฐฉ๋ฒ•์ด ๋” ์ˆ˜์ต๋ฅ ์ด ๋†’์€์ง€ ๊ฒจ๋ค„๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์˜ค๋กœ์ง€ MachineDuck์ด๋ผ๋Š” ๊ธฐ์—…์˜ ์ฃผ์‹๋งŒ ๊ฑฐ๋ž˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋‚ด๊ธฐย ๊ธฐ๊ฐ„์€ 2021๋…„ 1์›” 1์ผ๋ถ€ํ„ฐ 2021๋…„ 1์›” 14์ผ๊นŒ์ง€์ด๋‹ค.ย ์ค€ํ˜„์ด์™€ ์„ฑ๋ฏผ์ด์—๊ฒŒ ์ฃผ์–ด์ง„ ํ˜„๊ธˆ์€ ๋™์ผํ•˜๋‹ค. ์„ธ๊ธฐ์˜ ๋Œ€๊ฒฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธฐ๊ฐ„์—๋Š” ๋งค์ผ ์ฃผ์‹ ๊ฑฐ๋ž˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. 2021๋…„ 1์›” 14์ผ์— ๋” ๋งŽ์€ ์ž์‚ฐ์„ ๋ณด์œ ํ•œ ์‚ฌ๋žŒ์ด ์Šน๋ฆฌํ•œ๋‹ค. 1์›” 14์ผ์˜ ์ž์‚ฐ์€ (ํ˜„๊ธˆ + 1์›” 14์ผ์˜ ์ฃผ๊ฐ€ ร— ์ฃผ์‹ ์ˆ˜)๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.
      ์šฐ๋ฆฌ๋Š” 2021๋…„ 1์›” 1์ผ๋ถ€ํ„ฐ 2021๋…„ 1์›” 14์ผ๊นŒ์ง€์˜ ์ฃผ์‹ ๊ฐ€๊ฒฉ์„ ๋ฏธ๋ฆฌ ์•Œ๊ณ  ์žˆ๋‹ค. ์ค€ํ˜„์ด์™€ ์„ฑ๋ฏผ์ด ์ค‘ ๋ˆ„๊ฐ€ ๋” ๋†’์€ ์ˆ˜์ต๋ฅ ์„ ๋‚ผ์ง€ ๋งžํ˜€๋ณด์ž!

โ—์ž…์ถœ๋ ฅ


[์ž…๋ ฅ]
์ฒซ ๋ฒˆ์งธ ์ค„์— ์ค€ํ˜„์ด์™€ ์„ฑ๋ฏผ์ด์—๊ฒŒ ์ฃผ์–ด์ง„ ํ˜„๊ธˆ์ด ์ฃผ์–ด์ง„๋‹ค.
๋‘ ๋ฒˆ์งธ ์ค„์— 2021๋…„ 1์›” 1์ผ๋ถ€ํ„ฐ 2021๋…„ 1์›” 14์ผ๊นŒ์ง€์˜ MachineDuck ์ฃผ๊ฐ€๊ฐ€ ๊ณต๋ฐฑ์„ ๋‘๊ณ  ์ฐจ๋ก€๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋ชจ๋“  ์ž…๋ ฅ์€ 1000 ์ดํ•˜์˜ ์–‘์˜ ์ •์ˆ˜์ด๋‹ค.
[์ถœ๋ ฅ]
1์›” 14์ผ ๊ธฐ์ค€ ์ค€ํ˜„์ด์˜ ์ž์‚ฐ์ด ๋” ํฌ๋‹ค๋ฉด "BNP"๋ฅผ, ์„ฑ๋ฏผ์ด์˜ ์ž์‚ฐ์ด ๋” ํฌ๋‹ค๋ฉด "TIMING"์„ ์ถœ๋ ฅํ•œ๋‹ค.
๋‘˜์˜ ์ž์‚ฐ์ด ๊ฐ™๋‹ค๋ฉด "SAMESAME"์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋ชจ๋“  ๊ฒฐ๊ณผ ๋”ฐ์˜ดํ‘œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ถœ๋ ฅํ•œ๋‹ค.
[์˜ˆ์‹œ]


๐ŸŽ ๋ฌธ์ œ ํ’€์ด


  • ์ค€ํ˜„์ด์˜ BNP๋Š” ์ฃผ์–ด์ง„ ๊ธˆ์•ก์„ ์ด์šฉํ•ด์„œ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค.
    • ๋ณด์œ ํ•œ ํ˜„๊ธˆ์œผ๋กœ ์ฃผ์‹์˜ ๊ฐ€๊ฒฉ์„ ๋‚˜๋ˆด์„ ๋•Œ 0๋ณด๋‹ค ํฌ๋ฉด ํ•ด๋‹น ์ฃผ์‹์„ ๋ชจ๋‘ ๋งค์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ฑ๋ฏผ์ด์˜ TIMING์€ 3์ผ ์—ฐ์†์œผ๋กœ ํ•˜๋ฝํ–ˆ์„ ๊ฒฝ์šฐ์—๋งŒ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค.
    • 3์ผ ์—ฐ์†์œผ๋กœ ํ•˜๋ฝํ•˜๊ณ  ๋‹ค์Œ๋‚ ์˜ ์ฃผ์‹์„ ๊ตฌ๋งคํ•˜๋ฏ€๋กœ i+3๋ฒˆ์งธ ๊ฐ€๊ฒฉ์œผ๋กœ ๋งค์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.
    • 3์ผ ์—ฐ์†์œผ๋กœ ์ƒ์Šนํ•˜๋ฉด ๋‹ค์Œ๋‚ ์— ํ•ด๋‹น ์ฃผ์‹์„ i+3๋ฒˆ์งธ ๊ฐ€๊ฒฉ์œผ๋กœ ๋งค๋„ํ•ฉ๋‹ˆ๋‹ค. (์ฃผ์‹ ๋ณด์œ ์‹œ์—๋งŒ)
    • 14์ผ ํ›„์˜ ์ค€ํ˜„์ด์™€ ์„ฑ๋ฏผ์ด์˜ ํ˜„๊ธˆ๊ณผ ๋งˆ์ง€๋ง‰ ๋‚  ์ฃผ์‹ ๊ฐ€๊ฒฉ์— ๋ณด์œ  ์ฃผ์‹ ์ˆ˜๋ฅผ ๊ณฑํ•ด์„œ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ–ฅ๏ธ ์ฝ”๋“œ


Java


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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int[] arr = new int[14];

        StringTokenizer st = new StringTokenizer(br.readLine()," ");
        for (int i = 0; i < 14; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        int JHmoney = N;
        int JHstock = 0;

        for (int i = 0; i < arr.length; i++) {
            if (JHmoney / arr[i] > 0) {
                int cnt = JHmoney / arr[i];
                JHstock += cnt;
                JHmoney -= cnt * arr[i];
            }
        }

        int SMmoney = N;
        int SMstock = 0;

        for (int i = 0; i < arr.length - 3; i++) {
            if ((arr[i] > arr[i + 1]) && (arr[i + 1] < arr[i + 2])) {
                if (SMstock == 0) {
                    continue;
                }
                SMmoney += arr[i + 3] * SMstock;
                SMstock = 0;
            }
            else if ((arr[i] < arr[i + 1]) && (arr[i + 1] > arr[i + 2])) {
                if (SMmoney / arr[i + 3] > 0) {
                    int cnt = SMmoney / arr[i + 3];
                    SMstock += cnt;
                    SMmoney -= cnt * arr[i + 3];
                }
            }
        }

        int JHreturn = JHmoney + arr[arr.length - 1] * JHstock;
        int Smreturn = SMmoney + arr[arr.length - 1] * SMstock;

        if (JHreturn > Smreturn) {
            System.out.println("BNP");
        } else if (JHreturn < Smreturn) {
            System.out.println("TIMING");
        } else {
            System.out.println("SAMESAME");
        }
    }
}

swift

import Foundation

let N = Int(readLine()!)!
let arr = readLine()!.split(separator: " ").map { Int($0)! }

var JHmoney = N
var JHstock = 0

for i in 0..<arr.count {
    if JHmoney / arr[i] > 0 {
        let cnt = JHmoney / arr[i]
        JHstock += cnt
        JHmoney -= cnt * arr[i]
    }
}

var SMmoney = N
var SMstock = 0

for i in 0..<arr.count - 3 {
    if arr[i] < arr[i + 1] && arr[i + 1] < arr[i + 2] {
        if SMstock == 0 {
            continue
        }
        SMmoney += SMstock * arr[i + 3]
        SMstock = 0
    }
    else if arr[i] > arr[i + 1] && arr[i + 1] > arr[i + 2] {
        if SMmoney / arr[i + 3] > 0 {
            let cnt = SMmoney / arr[i + 3]
            SMstock += cnt
            SMmoney -= cnt * arr[i + 3]
        }
    }
}

let JHreturn = JHmoney + arr.last! * JHstock
let SMreturn = SMmoney + arr.last! * SMstock

if JHreturn > SMreturn {
    print("BNP")
} else if JHreturn < SMreturn {
    print("TIMING")
} else {
    print("SAMESAME")
}

profile
10๋งˆ๋ฆฌ์˜ ํ† ๋ผ๊ฐ€ ์—ด์‹ฌํžˆ ๊ณต๋ถ€ ์ค‘.. ์ง‘๋‹จ ์ง€์„ฑ์œผ๋กœ ์„ฑ์žฅํ•ด์š”.

0๊ฐœ์˜ ๋Œ“๊ธ€