J1Yun
ZU-TECHLOG
J1Yun
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ“‘ Category (135)
    • Algorithm (61)
      • ๐Ÿ“š Concept (6)
      • ๐Ÿ“˜ Baekjoon Judge (53)
      • ๐Ÿ“— Programmers (2)
    • Computer Science (42)
      • ๐Ÿ”’ Operating System (14)
      • ๐Ÿ“ก Network (15)
      • ๐Ÿ’พ Database (8)
      • ๐Ÿงฉ Design Pattern (4)
      • ๐Ÿ”‘ Security (1)
    • Activities (12)
      • ๐Ÿฆ ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ 9๊ธฐ (6)
      • ๐Ÿ’ป SW๋งˆ์—์ŠคํŠธ๋กœ 13๊ธฐ (6)
    • Infra (1)
      • โ˜๏ธ AWS (1)
    • Languages (1)
      • ๐Ÿ’™ Python (1)
    • Backend (7)
      • ๐Ÿ”ต Django (4)
      • ๐ŸŸข Node.js (3)
    • Ect. (8)
      • ๐Ÿ’ฌ Talk (0)
      • ๐Ÿ—‚๏ธ ๊ฐœ๋ฐœ์ง๊ตฐ ์ทจ์—… ์ค€๋น„์ž๋ฃŒ (8)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
J1Yun

ZU-TECHLOG

[BOJ] ๋ฐฑ์ค€ 20055๋ฒˆ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ์œ„์˜ ๋กœ๋ด‡ - ํŒŒ์ด์ฌ(Python)
Algorithm/๐Ÿ“˜ Baekjoon Judge

[BOJ] ๋ฐฑ์ค€ 20055๋ฒˆ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ์œ„์˜ ๋กœ๋ด‡ - ํŒŒ์ด์ฌ(Python)

728x90

๋ฌธ์ œ

๊ธธ์ด๊ฐ€ N์ธ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ๊ฐ€ ์žˆ๊ณ , ๊ธธ์ด๊ฐ€ 2N์ธ ๋ฒจํŠธ๊ฐ€ ์ด ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ๋ฅผ ์œ„์•„๋ž˜๋กœ ๊ฐ์‹ธ๋ฉฐ ๋Œ๊ณ  ์žˆ๋‹ค. ๋ฒจํŠธ๋Š” ๊ธธ์ด 1 ๊ฐ„๊ฒฉ์œผ๋กœ 2N๊ฐœ์˜ ์นธ์œผ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ฐ ์นธ์—๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด 1๋ถ€ํ„ฐ 2N๊นŒ์ง€์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๋‹ค.

๋ฒจํŠธ๊ฐ€ ํ•œ ์นธ ํšŒ์ „ํ•˜๋ฉด 1๋ฒˆ๋ถ€ํ„ฐ 2N-1๋ฒˆ๊นŒ์ง€์˜ ์นธ์€ ๋‹ค์Œ ๋ฒˆํ˜ธ์˜ ์นธ์ด ์žˆ๋Š” ์œ„์น˜๋กœ ์ด๋™ํ•˜๊ณ , 2N๋ฒˆ ์นธ์€ 1๋ฒˆ ์นธ์˜ ์œ„์น˜๋กœ ์ด๋™ํ•œ๋‹ค. i๋ฒˆ ์นธ์˜ ๋‚ด๊ตฌ๋„๋Š” Ai์ด๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ 1๋ฒˆ ์นธ์ด ์žˆ๋Š” ์œ„์น˜๋ฅผ "์˜ฌ๋ฆฌ๋Š” ์œ„์น˜", N๋ฒˆ ์นธ์ด ์žˆ๋Š” ์œ„์น˜๋ฅผ "๋‚ด๋ฆฌ๋Š” ์œ„์น˜"๋ผ๊ณ  ํ•œ๋‹ค.

์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ์— ๋ฐ•์Šค ๋ชจ์–‘ ๋กœ๋ด‡์„ ํ•˜๋‚˜์”ฉ ์˜ฌ๋ฆฌ๋ ค๊ณ  ํ•œ๋‹ค. ๋กœ๋ด‡์€ ์˜ฌ๋ฆฌ๋Š” ์œ„์น˜์—๋งŒ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ ๋กœ๋ด‡์ด ๋‚ด๋ฆฌ๋Š” ์œ„์น˜์— ๋„๋‹ฌํ•˜๋ฉด ๊ทธ ์ฆ‰์‹œ ๋‚ด๋ฆฐ๋‹ค. ๋กœ๋ด‡์€ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ์œ„์—์„œ ์Šค์Šค๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋กœ๋ด‡์„ ์˜ฌ๋ฆฌ๋Š” ์œ„์น˜์— ์˜ฌ๋ฆฌ๊ฑฐ๋‚˜ ๋กœ๋ด‡์ด ์–ด๋–ค ์นธ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ๊ทธ ์นธ์˜ ๋‚ด๊ตฌ๋„๋Š” ์ฆ‰์‹œ 1๋งŒํผ ๊ฐ์†Œํ•œ๋‹ค.

์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ๋ฅผ ์ด์šฉํ•ด ๋กœ๋ด‡๋“ค์„ ๊ฑด๋„ˆํŽธ์œผ๋กœ ์˜ฎ๊ธฐ๋ ค๊ณ  ํ•œ๋‹ค. ๋กœ๋ด‡์„ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ผ์ด ์ˆœ์„œ๋Œ€๋กœ ์ผ์–ด๋‚œ๋‹ค.

  1. ๋ฒจํŠธ๊ฐ€ ๊ฐ ์นธ ์œ„์— ์žˆ๋Š” ๋กœ๋ด‡๊ณผ ํ•จ๊ป˜ ํ•œ ์นธ ํšŒ์ „ํ•œ๋‹ค.
  2. ๊ฐ€์žฅ ๋จผ์ € ๋ฒจํŠธ์— ์˜ฌ๋ผ๊ฐ„ ๋กœ๋ด‡๋ถ€ํ„ฐ, ๋ฒจํŠธ๊ฐ€ ํšŒ์ „ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ•œ ์นธ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๋™ํ•œ๋‹ค. ๋งŒ์•ฝ ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๊ฐ€๋งŒํžˆ ์žˆ๋Š”๋‹ค.
    • ๋กœ๋ด‡์ด ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋™ํ•˜๋ ค๋Š” ์นธ์— ๋กœ๋ด‡์ด ์—†์œผ๋ฉฐ, ๊ทธ ์นธ์˜ ๋‚ด๊ตฌ๋„๊ฐ€ 1 ์ด์ƒ ๋‚จ์•„ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  3. ์˜ฌ๋ฆฌ๋Š” ์œ„์น˜์— ์žˆ๋Š” ์นธ์˜ ๋‚ด๊ตฌ๋„๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด ์˜ฌ๋ฆฌ๋Š” ์œ„์น˜์— ๋กœ๋ด‡์„ ์˜ฌ๋ฆฐ๋‹ค.
  4. ๋‚ด๊ตฌ๋„๊ฐ€ 0์ธ ์นธ์˜ ๊ฐœ์ˆ˜๊ฐ€ K๊ฐœ ์ด์ƒ์ด๋ผ๋ฉด ๊ณผ์ •์„ ์ข…๋ฃŒํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด 1๋ฒˆ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.

์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ๋ช‡ ๋ฒˆ์งธ ๋‹จ๊ณ„๊ฐ€ ์ง„ํ–‰ ์ค‘์ด์—ˆ๋Š”์ง€ ๊ตฌํ•ด๋ณด์ž. ๊ฐ€์žฅ ์ฒ˜์Œ ์ˆ˜ํ–‰๋˜๋Š” ๋‹จ๊ณ„๋Š” 1๋ฒˆ์งธ ๋‹จ๊ณ„์ด๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N, K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” A1, A2, ..., A2N์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

๋ช‡ ๋ฒˆ์งธ ๋‹จ๊ณ„๊ฐ€ ์ง„ํ–‰ ์ค‘์ผ๋•Œ ์ข…๋ฃŒ๋˜์—ˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

 

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

 

20055๋ฒˆ: ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ์œ„์˜ ๋กœ๋ด‡

๊ธธ์ด๊ฐ€ N์ธ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ๊ฐ€ ์žˆ๊ณ , ๊ธธ์ด๊ฐ€ 2N์ธ ๋ฒจํŠธ๊ฐ€ ์ด ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ๋ฅผ ์œ„์•„๋ž˜๋กœ ๊ฐ์‹ธ๋ฉฐ ๋Œ๊ณ  ์žˆ๋‹ค. ๋ฒจํŠธ๋Š” ๊ธธ์ด 1 ๊ฐ„๊ฒฉ์œผ๋กœ 2N๊ฐœ์˜ ์นธ์œผ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ฐ ์นธ์—๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด 1๋ถ€

www.acmicpc.net

 

 

๐Ÿ’ก ํ’€์ด ๋ฐ ์ฝ”๋“œ

- 1์ฐจ ์‹œ๋„ ์ฝ”๋“œ

from collections import deque
n, k = map(int, input().split())
data = list(map(int, input().split()))
belt1, belt2 = deque(reversed(data[:n])), deque(reversed(data[n:]))
robot = deque([0]*n)
count, result = 0, 0
while count < k:
    result += 1
    belt2.append(belt1.popleft())
    belt1.append(belt2.popleft())
    robot.popleft()
    robot.append(0)
    if robot[0] == 1:
        robot[0] = 0
    for i in range(1, n):
        if robot[i] == 1 and robot[i-1] == 0 and belt1[i-1] > 0:
            belt1[i-1] -= 1
            robot[i], robot[i-1] = 0, 1
    if belt1[-1] > 0:
        belt1[-1] -= 1
        robot[-1] = 1
    temp = 0
    for i in range(n):
        if belt1[i] == 0:
            temp += 1
        if belt2[i] == 0:
            temp += 1
    count = temp
print(result)

๋กœ๋ด‡์„ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์„ ์ˆœ์„œ๋Œ€๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์œ„์™€ ๊ฐ™์ด ๋‹จ๊ณ„์— ๋Œ€๋‹นํ•˜๋Š” while๋ฌธ ์•ˆ์—์„œ n๋ฒˆ์˜ ๋ฐ˜๋ณต์„ ๋Œ๊ธฐ ๋•Œ๋ฌธ์— Python3๋กœ ์ œ์ถœ ์‹œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค. ๋”ฐ๋ผ์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ–ˆ๋‹ค.

 

- ์ตœ์ข… ์ œ์ถœ ์ฝ”๋“œ

from collections import deque
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
data = list(map(int, input().split()))
belt1, belt2 = deque(reversed(data[:n])), deque(reversed(data[n:]))
robot = deque([0]*n)
count, result = 0, 0
while count < k:
    result += 1
    belt2.append(belt1.popleft())
    belt1.append(belt2.popleft())
    robot.popleft()
    robot.append(0)
    if robot[0] == 1:
        robot[0] = 0
    if sum(robot):
        for i in range(1, n):
            if robot[i] == 1 and robot[i-1] == 0 and belt1[i-1] > 0:
                belt1[i-1] -= 1
                if belt1[i-1] == 0:
                    count += 1
                robot[i], robot[i-1] = 0, 1
    if belt1[-1] > 0:
        belt1[-1] -= 1
        if belt1[-1] == 0:
            count += 1
        robot[-1] = 1
print(result)

์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ์œ„์—์„œ ์›€์ง์ผ ์ˆ˜ ์žˆ๋Š” ๋กœ๋ด‡์„ ์ฐพ๋Š” for๋ฌธ์„ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ์œ„์— ๋กœ๋ด‡์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰๋˜๋„๋ก ์กฐ๊ฑด๋ฌธ์„ ์ถ”๊ฐ€ํ–ˆ๊ณ , ๋‚ด๊ตฌ๋„๊ฐ€ 0์ธ ์นธ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•  ๋•Œ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ผ์ผ์ด ์„ธ์ง€ ์•Š๊ณ  ๋‚ด๊ตฌ๋„๋ฅผ -1ํ•˜๋Š” ๊ตฌ๊ฐ„๋งˆ๋‹ค ๋‚ด๊ตฌ๋„๊ฐ€ 0์ด ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด 0์ด ๋  ๋•Œ๋งˆ๋‹ค countํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •ํ–ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, ์‹œ๊ฐ„์ดˆ๊ณผ ์—†์ด ์ •์ƒ ์ œ์ถœ๋˜์—ˆ๋‹ค.

728x90

'Algorithm > ๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] ๋ฐฑ์ค€ 15683๋ฒˆ ๊ฐ์‹œ - ํŒŒ์ด์ฌ(Python)  (0) 2022.04.04
[BOJ] ๋ฐฑ์ค€ 14499๋ฒˆ ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ - ํŒŒ์ด์ฌ(Python)  (0) 2022.04.02
[BOJ] ๋ฐฑ์ค€ 16234๋ฒˆ ์ธ๊ตฌ ์ด๋™ - ํŒŒ์ด์ฌ(Python)  (1) 2022.03.31
[BOJ] ๋ฐฑ์ค€ 14500๋ฒˆ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ - ํŒŒ์ด์ฌ(Python)  (0) 2022.03.31
[BOJ] ๋ฐฑ์ค€ 3190๋ฒˆ ๋ฑ€ - ํŒŒ์ด์ฌ(Python)  (3) 2022.02.23
    'Algorithm/๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€์ด๋‹ค
    • [BOJ] ๋ฐฑ์ค€ 15683๋ฒˆ ๊ฐ์‹œ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 14499๋ฒˆ ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 16234๋ฒˆ ์ธ๊ตฌ ์ด๋™ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 14500๋ฒˆ ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ - ํŒŒ์ด์ฌ(Python)
    J1Yun
    J1Yun
    ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ๊ณต๋ถ€ ๋‚ด์šฉ ๊ธฐ๋ก์žฅ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”