[λ°±μ€€/python] 1244번 : μŠ€μœ„μΉ˜ 켜고 끄기

2021. 8. 7. 10:49

문제

1λΆ€ν„° μ—°μ†μ μœΌλ‘œ λ²ˆν˜Έκ°€ λΆ™μ–΄μžˆλŠ” μŠ€μœ„μΉ˜λ“€μ΄ μžˆλ‹€. μŠ€μœ„μΉ˜λŠ” 켜져 μžˆκ±°λ‚˜ κΊΌμ ΈμžˆλŠ” μƒνƒœμ΄λ‹€. <κ·Έλ¦Ό 1>에 μŠ€μœ„μΉ˜ 8개의 μƒνƒœκ°€ ν‘œμ‹œλ˜μ–΄ μžˆλ‹€. ‘1’은 μŠ€μœ„μΉ˜κ°€ 켜져 μžˆμŒμ„, ‘0’은 κΊΌμ Έ μžˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€. 그리고 학생 λͺ‡ λͺ…을 λ½‘μ•„μ„œ, ν•™μƒλ“€μ—κ²Œ 1 이상이고 μŠ€μœ„μΉ˜ 개수 μ΄ν•˜μΈ μžμ—°μˆ˜λ₯Ό ν•˜λ‚˜μ”© λ‚˜λˆ„μ–΄μ£Όμ—ˆλ‹€. 학생듀은 μžμ‹ μ˜ 성별과 받은 μˆ˜μ— 따라 μ•„λž˜μ™€ 같은 λ°©μ‹μœΌλ‘œ μŠ€μœ„μΉ˜λ₯Ό μ‘°μž‘ν•˜κ²Œ λœλ‹€.

남학생은 μŠ€μœ„μΉ˜ λ²ˆν˜Έκ°€ μžκΈ°κ°€ 받은 수의 배수이면, κ·Έ μŠ€μœ„μΉ˜μ˜ μƒνƒœλ₯Ό λ°”κΎΌλ‹€. 즉, μŠ€μœ„μΉ˜κ°€ 켜져 있으면 끄고, κΊΌμ Έ 있으면 μΌ λ‹€. <κ·Έλ¦Ό 1>κ³Ό 같은 μƒνƒœμ—μ„œ 남학생이 3을 λ°›μ•˜λ‹€λ©΄, 이 학생은 <κ·Έλ¦Ό 2>와 같이 3번, 6번 μŠ€μœ„μΉ˜μ˜ μƒνƒœλ₯Ό λ°”κΎΌλ‹€.

여학생은 μžκΈ°κ°€ 받은 μˆ˜μ™€ 같은 λ²ˆν˜Έκ°€ 뢙은 μŠ€μœ„μΉ˜λ₯Ό μ€‘μ‹¬μœΌλ‘œ μ’Œμš°κ°€ λŒ€μΉ­μ΄λ©΄μ„œ κ°€μž₯ λ§Žμ€ μŠ€μœ„μΉ˜λ₯Ό ν¬ν•¨ν•˜λŠ” ꡬ간을 μ°Ύμ•„μ„œ, κ·Έ ꡬ간에 μ†ν•œ μŠ€μœ„μΉ˜μ˜ μƒνƒœλ₯Ό λͺ¨λ‘ λ°”κΎΌλ‹€. μ΄λ•Œ ꡬ간에 μ†ν•œ μŠ€μœ„μΉ˜ κ°œμˆ˜λŠ” 항상 ν™€μˆ˜κ°€ λœλ‹€.

μŠ€μœ„μΉ˜ λ²ˆν˜ΈμŠ€μœ„μΉ˜ μƒνƒœ

β‘  β‘‘ β‘’ β‘£ β‘€ β‘₯ ⑦ ⑧
0 1 0 1 0 0 0 1

<κ·Έλ¦Ό 1>

예λ₯Ό λ“€μ–΄ <κ·Έλ¦Ό 2>μ—μ„œ 여학생이 3을 λ°›μ•˜λ‹€λ©΄, 3번 μŠ€μœ„μΉ˜λ₯Ό μ€‘μ‹¬μœΌλ‘œ 2번, 4번 μŠ€μœ„μΉ˜μ˜ μƒνƒœκ°€ κ°™κ³  1번, 5번 μŠ€μœ„μΉ˜μ˜ μƒνƒœκ°€ κ°™μœΌλ―€λ‘œ, <κ·Έλ¦Ό 3>κ³Ό 같이 1λ²ˆλΆ€ν„° 5λ²ˆκΉŒμ§€ μŠ€μœ„μΉ˜μ˜ μƒνƒœλ₯Ό λͺ¨λ‘ λ°”κΎΌλ‹€. λ§Œμ•½ <κ·Έλ¦Ό 2>μ—μ„œ 여학생이 4λ₯Ό λ°›μ•˜λ‹€λ©΄, 3번, 5번 μŠ€μœ„μΉ˜μ˜ μƒνƒœκ°€ μ„œλ‘œ λ‹€λ₯΄λ―€λ‘œ 4번 μŠ€μœ„μΉ˜μ˜ μƒνƒœλ§Œ λ°”κΎΌλ‹€.

μŠ€μœ„μΉ˜ λ²ˆν˜ΈμŠ€μœ„μΉ˜ μƒνƒœ

β‘  β‘‘ β‘’ β‘£ β‘€ β‘₯ ⑦ ⑧
0 1 1 1 0 1 0 1

<κ·Έλ¦Ό 2>

μŠ€μœ„μΉ˜ λ²ˆν˜ΈμŠ€μœ„μΉ˜ μƒνƒœ

β‘  β‘‘ β‘’ β‘£ β‘€ β‘₯ ⑦ ⑧
1 0 0 0 1 1 0 1

<κ·Έλ¦Ό 3>

μž…λ ₯으둜 μŠ€μœ„μΉ˜λ“€μ˜ 처음 μƒνƒœκ°€ 주어지고, 각 ν•™μƒμ˜ 성별과 받은 μˆ˜κ°€ 주어진닀. 학생듀은 μž…λ ₯λ˜λŠ” μˆœμ„œλŒ€λ‘œ 자기의 성별과 받은 μˆ˜μ— 따라 μŠ€μœ„μΉ˜μ˜ μƒνƒœλ₯Ό λ°”κΎΈμ—ˆμ„ λ•Œ, μŠ€μœ„μΉ˜λ“€μ˜ λ§ˆμ§€λ§‰ μƒνƒœλ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…λ ₯

첫째 μ€„μ—λŠ” μŠ€μœ„μΉ˜ κ°œμˆ˜κ°€ 주어진닀. μŠ€μœ„μΉ˜ κ°œμˆ˜λŠ” 100 μ΄ν•˜μΈ μ–‘μ˜ μ •μˆ˜μ΄λ‹€. λ‘˜μ§Έ μ€„μ—λŠ” 각 μŠ€μœ„μΉ˜μ˜ μƒνƒœκ°€ 주어진닀. 켜져 있으면 1, 꺼져있으면 0이라고 ν‘œμ‹œν•˜κ³  사이에 빈칸이 ν•˜λ‚˜μ”© μžˆλ‹€. μ…‹μ§Έ μ€„μ—λŠ” ν•™μƒμˆ˜κ°€ 주어진닀. ν•™μƒμˆ˜λŠ” 100 μ΄ν•˜μΈ μ–‘μ˜ μ •μˆ˜μ΄λ‹€. λ„·μ§Έ 쀄뢀터 λ§ˆμ§€λ§‰ μ€„κΉŒμ§€ ν•œ 쀄에 ν•œ ν•™μƒμ˜ 성별, 학생이 받은 μˆ˜κ°€ 주어진닀. 남학생은 1둜, 여학생은 2둜 ν‘œμ‹œν•˜κ³ , 학생이 받은 μˆ˜λŠ” μŠ€μœ„μΉ˜ 개수 μ΄ν•˜μΈ μ–‘μ˜ μ •μˆ˜μ΄λ‹€. ν•™μƒμ˜ 성별과 받은 수 사이에 빈칸이 ν•˜λ‚˜μ”© μžˆλ‹€.

 

좜λ ₯

μŠ€μœ„μΉ˜μ˜ μƒνƒœλ₯Ό 1번 μŠ€μœ„μΉ˜μ—μ„œ μ‹œμž‘ν•˜μ—¬ λ§ˆμ§€λ§‰ μŠ€μœ„μΉ˜κΉŒμ§€ ν•œ 쀄에 20κ°œμ”© 좜λ ₯ν•œλ‹€. 예λ₯Ό λ“€μ–΄ 21번 μŠ€μœ„μΉ˜κ°€ μžˆλ‹€λ©΄ 이 μŠ€μœ„μΉ˜μ˜ μƒνƒœλŠ” λ‘˜μ§Έ 쀄 맨 μ•žμ— 좜λ ₯ν•œλ‹€. μΌœμ§„ μŠ€μœ„μΉ˜λŠ” 1, 꺼진 μŠ€μœ„μΉ˜λŠ” 0으둜 ν‘œμ‹œν•˜κ³ , μŠ€μœ„μΉ˜ μƒνƒœ 사이에 λΉˆμΉΈμ„ ν•˜λ‚˜μ”© λ‘”λ‹€.

 

μ •λ‹΅

import sys
input = sys.stdin.readline

change = {1:0, 0:1}

n = int(input())
switch = list(map(int, input().split()))
s = int(input())

for _ in range(s):
    g, num = map(int, input().split())
    if g == 1: # 남학생
        target = num-1
        while target < n:
            switch[target] = change[switch[target]]
            target += num

    else:   # 여학생
        num -= 1
        switch[num] = change[switch[num]]
        i = 1
        while num-i >= 0 and num+i < n and switch[num-i] == switch[num+i]:
            switch[num-i] = change[switch[num-i]]
            switch[num+i] = change[switch[num+i]]
            i += 1

for i in range(0, n, 20):
    print(*switch[i:i+20])

βœ” 1을 0으둜, 0을 1둜 λ°”κΎΈλŠ” 방법 λ”•μ…”λ„ˆλ¦¬ μ‚¬μš©ν•˜κΈ°

βœ” λ¦¬μŠ€νŠΈμ—μ„œλŠ” 0λΆ€ν„°, μŠ€μœ„μΉ˜λŠ” 1λΆ€ν„° μ‹œμž‘λ˜λŠ” 점 μœ μ˜ν•˜κΈ°

βœ” μ—¬ν•™μƒμ˜ 경우, 리슀트 λ²”μœ„κ°€ λ„˜μ–΄κ°€μ§€ μ•Šλ„λ‘ μœ μ˜ν•˜κΈ°

βœ” λ§ˆμ§€λ§‰ κ²°κ³Όλ₯Ό ν”„λ¦°νŠΈν•  λ•Œ print(*리슀트) ν˜•νƒœλ‘œ μž‘μ„±ν•˜λ©΄ 리슀트 ν˜•νƒœκ°€ μ•„λ‹Œ 띄어쓰기λ₯Ό κΈ°μ€€μœΌλ‘œ μˆ«μžκ°€ λ‚˜μ—΄λœλ‹€.

728x90

BELATED ARTICLES

more