Post

🐒 πŸ”„ 귀도 반 λ‘œμΈμ€ ν¬λ¦¬μŠ€λ§ˆμŠ€λ‚  μ‹¬μ‹¬ν•˜λ‹€κ³  νŒŒμ΄μ¬μ„ λ§Œλ“€μ—ˆλ‹€

1. 문제 링크

6568번: 귀도 반 λ‘œμΈμ€ ν¬λ¦¬μŠ€λ§ˆμŠ€λ‚  μ‹¬μ‹¬ν•˜λ‹€κ³  νŒŒμ΄μ¬μ„ λ§Œλ“€μ—ˆλ‹€


2. μ½”λ“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
"""
[6568] 귀도 반 λ‘œμΈμ€ ν¬λ¦¬μŠ€λ§ˆμŠ€λ‚  μ‹¬μ‹¬ν•˜λ‹€κ³  νŒŒμ΄μ¬μ„ λ§Œλ“€μ—ˆλ‹€

πŸ’› 문제
κ·Έλž˜μ„œ μ—¬λŸ¬λΆ„λ„ ν¬λ¦¬μŠ€λ§ˆμŠ€λ‚  μ‹¬μ‹¬ν•΄μ„œ 컴퓨터λ₯Ό ν•˜λ‚˜ λ§Œλ“€μ—ˆλ‹€. 
이 μ»΄ν“¨ν„°λŠ” μ•„μ£Ό 적은 수의 λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λŠ” ν•˜λ‚˜μ˜ ν”„λ‘œμ„Έμ„œ, 
32λ°”μ΄νŠΈ λ©”λͺ¨λ¦¬, 8λΉ„νŠΈμ§œλ¦¬ κ°€μ‚°κΈ°, 5λΉ„νŠΈμ§œλ¦¬ ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°(pc)둜 이루어져 μžˆλ‹€. 

폰 λ…Έμ΄λ§Œ ꡬ쑰λ₯Ό ν‘œλ°©ν•˜μ—¬ 이 μ»΄ν“¨ν„°λŠ” λ©”λͺ¨λ¦¬μ™€ ν”„λ‘œκ·Έλž¨ ꡬ문을 κ³΅μœ ν•œλ‹€.
ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°λŠ” λ‹€μŒμ— μ‹€ν–‰λ˜μ–΄μ•Ό ν•˜λŠ” λͺ…λ Ήμ–΄μ˜ μ£Όμ†Œλ₯Ό κ°–κ³  μžˆλ‹€. 
각 λͺ…λ Ήμ–΄μ˜ κΈΈμ΄λŠ” 1λ°”μ΄νŠΈμ΄λ©°, μƒμœ„ 3λΉ„νŠΈλŠ” λͺ…λ Ήμ–΄μ˜ μ’…λ₯˜λ₯Ό, ν•˜μœ„ 5λΉ„νŠΈλŠ” ν”Όμ—°μ‚°μžλ₯Ό ν‘œν˜„ν•œλ‹€. 
ν”Όμ—°μ‚°μžλŠ” μ–Έμ œλ‚˜ λ©”λͺ¨λ¦¬ κ°’(XXXXX)이닀. ν”Όμ—°μ‚°μžκ°€ ν•„μš”ν•˜μ§€ μ•Šμ€ λͺ…령어도 μžˆλŠ”λ°, μ΄λ•ŒλŠ” ν•˜μœ„ 5λΉ„νŠΈλŠ” λ¬΄μ˜λ―Έν•˜λ‹€(-----). 
μ‚¬μš©λ˜λŠ” λͺ…λ Ήμ–΄λ“€μ˜ μ˜λ―ΈλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

000xxxxx   STA x   λ©”λͺ¨λ¦¬ μ£Όμ†Œ x에 κ°€μ‚°κΈ°μ˜ 값을 μ €μž₯ν•œλ‹€.
001xxxxx   LDA x   λ©”λͺ¨λ¦¬ μ£Όμ†Œ x의 값을 κ°€μ‚°κΈ°λ‘œ λΆˆλŸ¬μ˜¨λ‹€.
010xxxxx   BEQ x   κ°€μ‚°κΈ°μ˜ 값이 0이면 PC 값을 x둜 λ°”κΎΌλ‹€.
011-----   NOP     아무 연산도 ν•˜μ§€ μ•ŠλŠ”λ‹€.
100-----   DEC     κ°€μ‚°κΈ° 값을 1 κ°μ†Œμ‹œν‚¨λ‹€.
101-----   INC     κ°€μ‚°κΈ° 값을 1 μ¦κ°€μ‹œν‚¨λ‹€.
110xxxxx   JMP x   PC 값을 x둜 λ°”κΎΌλ‹€.
111-----   HLT     ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•œλ‹€.

μ΄ˆκΈ°μ—” PC와 κ°€μ‚°κΈ° 값은 λͺ¨λ‘ 0이닀. λͺ…λ Ήμ–΄λ₯Ό λΆˆλŸ¬μ™€ ν•΄λ…ν•œ λ’€, κ·Έ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜κΈ° 전에 PC 값은 1 μ¦κ°€ν•œλ‹€. 
ν”„λ‘œκ·Έλž¨μ€ μ–Έμ œλ‚˜ μ’…λ£Œλœλ‹€κ³  가정해도 μ’‹λ‹€.

πŸ’š μž…λ ₯
μž…λ ₯은 μ—¬λŸ¬ 개의 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ‘œ 주어진닀. 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λŠ” 32개의 쀄에 걸쳐 각 λ©”λͺ¨λ¦¬ κ°’, 즉 μ½”λ“œκ°€ μˆœμ„œλŒ€λ‘œ 8λΉ„νŠΈ 2μ§„μˆ˜μ˜ ν˜•νƒœλ‘œ 주어진닀. 
μ™Όμͺ½μ— μžˆλŠ” λΉ„νŠΈμΌμˆ˜λ‘ μƒμœ„ λΉ„νŠΈμ΄λ‹€. μž…λ ₯은 EOF와 ν•¨κ»˜ μ’…λ£Œλœλ‹€.

πŸ’™ 좜λ ₯
각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ˆλ‹€ ν•œ 쀄에 걸쳐 ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ˜μ—ˆμ„ λ•Œμ˜ κ°€μ‚°κΈ° 값을 μ—­μ‹œ 8λΉ„νŠΈ 2μ§„μˆ˜ ν˜•νƒœλ‘œ 좜λ ₯ν•œλ‹€.
μ΄λ•Œλ„ μ™Όμͺ½μ— 좜λ ₯될수둝 μƒμœ„ λΉ„νŠΈμ΄λ‹€.
"""

table = [int(input().splite()) for _ in range(32)]

# pc와 κ°€μ‚°κΈ° λͺ¨λ‘ 0
pc, add = 0

while True:

    cmd, x = table[pc], 32
    pc = (pc + 1) % 32

    if cmd == 0: 
        table[x] = a
    elif cmd == 1: 
        a = table[x]
    elif cmd == 2: 
        if not a:
            continue

print(cmd)


This post is licensed under CC BY 4.0 by the author.