Skip to content

Commit 9b146c1

Browse files
authored
Merge pull request #6 from L1LDB/gani0325
post: [10주차_이가은] 🔄 귀도 반 로썸은 크리스마스날 심심하다고 파이썬을 만들었다
2 parents 1a7f9b6 + 9e0aff4 commit 9b146c1

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
title: 🐢 🔄 귀도 반 로썸은 크리스마스날 심심하다고 파이썬을 만들었다
3+
author: gani0325
4+
date: 2023-12-24 02:00:00 +09:00
5+
categories: [알고리즘, 귀도 반 로썸은 크리스마스날 심심하다고 파이썬을 만들었다]
6+
tags: [알고리즘, 백준, 골드5, 구현, 10주차, 이가은]
7+
render_with_liquid: false
8+
math: true
9+
---
10+
11+
## 1. 문제 링크
12+
13+
[6568번: 귀도 반 로썸은 크리스마스날 심심하다고 파이썬을 만들었다](https://www.acmicpc.net/problem/6568)
14+
15+
<br>ㅇㅇㅇㅇㅇㅇㅇㅇ
16+
17+
## 2. 코드
18+
19+
20+
```python
21+
22+
"""
23+
[6568] 귀도 반 로썸은 크리스마스날 심심하다고 파이썬을 만들었다
24+
25+
💛 문제
26+
그래서 여러분도 크리스마스날 심심해서 컴퓨터를 하나 만들었다.
27+
이 컴퓨터는 아주 적은 수의 명령어를 사용하는 하나의 프로세서,
28+
32바이트 메모리, 8비트짜리 가산기, 5비트짜리 프로그램 카운터(pc)로 이루어져 있다.
29+
30+
폰 노이만 구조를 표방하여 이 컴퓨터는 메모리와 프로그램 구문을 공유한다.
31+
프로그램 카운터는 다음에 실행되어야 하는 명령어의 주소를 갖고 있다.
32+
각 명령어의 길이는 1바이트이며, 상위 3비트는 명령어의 종류를, 하위 5비트는 피연산자를 표현한다.
33+
피연산자는 언제나 메모리 값(XXXXX)이다. 피연산자가 필요하지 않은 명령어도 있는데, 이때는 하위 5비트는 무의미하다(-----).
34+
사용되는 명령어들의 의미는 다음과 같다.
35+
36+
000xxxxx STA x 메모리 주소 x에 가산기의 값을 저장한다.
37+
001xxxxx LDA x 메모리 주소 x의 값을 가산기로 불러온다.
38+
010xxxxx BEQ x 가산기의 값이 0이면 PC 값을 x로 바꾼다.
39+
011----- NOP 아무 연산도 하지 않는다.
40+
100----- DEC 가산기 값을 1 감소시킨다.
41+
101----- INC 가산기 값을 1 증가시킨다.
42+
110xxxxx JMP x PC 값을 x로 바꾼다.
43+
111----- HLT 프로그램을 종료한다.
44+
45+
초기엔 PC와 가산기 값은 모두 0이다. 명령어를 불러와 해독한 뒤, 그 명령어를 실행하기 전에 PC 값은 1 증가한다.
46+
프로그램은 언제나 종료된다고 가정해도 좋다.
47+
48+
💚 입력
49+
입력은 여러 개의 테스트 케이스로 주어진다. 각 테스트 케이스는 32개의 줄에 걸쳐 각 메모리 값, 즉 코드가 순서대로 8비트 2진수의 형태로 주어진다.
50+
왼쪽에 있는 비트일수록 상위 비트이다. 입력은 EOF와 함께 종료된다.
51+
52+
💙 출력
53+
각 테스트 케이스마다 한 줄에 걸쳐 프로그램이 종료되었을 때의 가산기 값을 역시 8비트 2진수 형태로 출력한다.
54+
이때도 왼쪽에 출력될수록 상위 비트이다.
55+
"""
56+
57+
table = [int(input().splite()) for _ in range(32)]
58+
59+
# pc와 가산기 모두 0
60+
pc, add = 0
61+
62+
while True:
63+
64+
cmd, x = table[pc], 32
65+
pc = (pc + 1) % 32
66+
67+
if cmd == 0:
68+
table[x] = a
69+
elif cmd == 1:
70+
a = table[x]
71+
elif cmd == 2:
72+
if not a:
73+
continue
74+
75+
print(cmd)
76+
```
77+
78+
<br>
79+

0 commit comments

Comments
 (0)