<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=CodeRace%2F2016%2F%EB%8B%B5%EC%95%88</id>
	<title>CodeRace/2016/답안 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=CodeRace%2F2016%2F%EB%8B%B5%EC%95%88"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=CodeRace/2016/%EB%8B%B5%EC%95%88&amp;action=history"/>
	<updated>2026-05-15T04:36:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=CodeRace/2016/%EB%8B%B5%EC%95%88&amp;diff=30636&amp;oldid=prev</id>
		<title>imported&gt;wraithkim: {CREATE}</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=CodeRace/2016/%EB%8B%B5%EC%95%88&amp;diff=30636&amp;oldid=prev"/>
		<updated>2016-05-20T12:34:26Z</updated>

		<summary type="html">&lt;p&gt;{CREATE}&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;6번 문제&lt;br /&gt;
 #pragma once&lt;br /&gt;
 #define _CRT_SECURE_NO_WARNINGS&lt;br /&gt;
 #include &amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 const int TRUE = 1;&lt;br /&gt;
 const int FALSE = 0;&lt;br /&gt;
 &lt;br /&gt;
 int equ = 0;&lt;br /&gt;
 int reg00 = 0, reg01 = 0, reg10 = 0, reg11 = 0;&lt;br /&gt;
 int mem00 = 0, mem01 = 0, mem10 = 0, mem11 = 0;&lt;br /&gt;
 &lt;br /&gt;
 void initialize(); // 레지스터와 메모리 값 초기화&lt;br /&gt;
 void fetch_command(); // 명령어 읽기&lt;br /&gt;
 int execute_command(int, int, int, int, int, int, int, int); // 명령어 실행&lt;br /&gt;
 &lt;br /&gt;
 int get_reg(int, int); // 해당되는 레지스터 값 얻기&lt;br /&gt;
 int get_mem(int, int); // 해당되는 메모리 값 얻기&lt;br /&gt;
 int get_bin4(int, int, int, int); // 해당되는 4자리 이진수 얻기&lt;br /&gt;
 void set_reg(int, int, int); // 해당되는 레지스터에 값 넣기&lt;br /&gt;
 void set_mem(int, int, int); // 해당되는 메모리에 값 넣기&lt;br /&gt;
 &lt;br /&gt;
 void load(int, int, int, int); // 메모리에서 레지스터로 값 불러오기&lt;br /&gt;
 void add(int, int, int, int); // 두 레지스터의 값 더하기&lt;br /&gt;
 void mul(int, int, int, int); // 두 레지스터의 값 곱하기&lt;br /&gt;
 void save(int, int, int, int); // 레지스터에서 메모리로 값 저장하기&lt;br /&gt;
 void equal(int, int, int, int); // 두 레지스터 값이 같은지 비교&lt;br /&gt;
 void beq(int, int, int, int); // 명령어 분기&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
 	printf(&amp;quot;2016 새싹교실 CodeRace\n&amp;quot;);&lt;br /&gt;
 	initialize();&lt;br /&gt;
 	fetch_command();&lt;br /&gt;
 	printf(&amp;quot;%d %d %d %d %d %d %d %d\n&amp;quot;, reg00, reg01, reg10, reg11, mem00, mem01, mem10, mem11);&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void initialize()&lt;br /&gt;
 {&lt;br /&gt;
 	// 처음 레지스터와 메모리 값 초기화&lt;br /&gt;
 	scanf(&amp;quot;%d %d %d %d %d %d %d %d&amp;quot;,&lt;br /&gt;
 		&amp;amp;amp;reg00, &amp;amp;amp;reg01, &amp;amp;amp;reg10, &amp;amp;amp;reg11, &amp;amp;amp;mem00, &amp;amp;amp;mem01, &amp;amp;amp;mem10, &amp;amp;amp;mem11);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void fetch_command()&lt;br /&gt;
 {&lt;br /&gt;
 	// 명령어 입력&lt;br /&gt;
 	int bit0, bit1, bit2, bit3, bit4, bit5, bit6, bit7;&lt;br /&gt;
 	do&lt;br /&gt;
 	{&lt;br /&gt;
 		scanf(&amp;quot;%d %d %d %d %d %d %d %d&amp;quot;,&lt;br /&gt;
 			&amp;amp;amp;bit0, &amp;amp;amp;bit1, &amp;amp;amp;bit2, &amp;amp;amp;bit3, &amp;amp;amp;bit4, &amp;amp;amp;bit5, &amp;amp;amp;bit6, &amp;amp;amp;bit7);&lt;br /&gt;
 		// 명령어 실행&lt;br /&gt;
 &lt;br /&gt;
 	} while (!execute_command(bit0, bit1, bit2, bit3, bit4, bit5, bit6, bit7));&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int execute_command(int bit0, int bit1, int bit2, int bit3, int bit4, int bit5, int bit6, int bit7)&lt;br /&gt;
 {&lt;br /&gt;
 	if (bit0 == TRUE)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (bit1 == TRUE)&lt;br /&gt;
 		{&lt;br /&gt;
 			if (bit2 == TRUE)&lt;br /&gt;
 			{&lt;br /&gt;
 				if (bit3 == TRUE) // 1111&lt;br /&gt;
 				{&lt;br /&gt;
 					return 1; // exit&lt;br /&gt;
 				}&lt;br /&gt;
 				else { // 1110&lt;br /&gt;
 &lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			else&lt;br /&gt;
 			{&lt;br /&gt;
 				if (bit3 == TRUE) // 1101&lt;br /&gt;
 				{&lt;br /&gt;
 &lt;br /&gt;
 				}&lt;br /&gt;
 				else { // 1100&lt;br /&gt;
 &lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 		else {&lt;br /&gt;
 			if (bit2 == TRUE)&lt;br /&gt;
 			{&lt;br /&gt;
 				if (bit3 == TRUE) // 1011&lt;br /&gt;
 				{&lt;br /&gt;
 &lt;br /&gt;
 				}&lt;br /&gt;
 				else {	// 1010&lt;br /&gt;
 &lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			else&lt;br /&gt;
 			{&lt;br /&gt;
 				if (bit3 == TRUE) // 1001&lt;br /&gt;
 				{&lt;br /&gt;
 &lt;br /&gt;
 				}&lt;br /&gt;
 				else { // 1000&lt;br /&gt;
 					beq(bit4, bit5, bit6, bit7);&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	else {&lt;br /&gt;
 		if (bit1 == TRUE)&lt;br /&gt;
 		{&lt;br /&gt;
 			if (bit2 == TRUE)&lt;br /&gt;
 			{&lt;br /&gt;
 				if (bit3 == TRUE) // 0111&lt;br /&gt;
 				{&lt;br /&gt;
 &lt;br /&gt;
 				}&lt;br /&gt;
 				else { // 0110&lt;br /&gt;
 &lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			else&lt;br /&gt;
 			{&lt;br /&gt;
 				if (bit3 == TRUE) // 0101&lt;br /&gt;
 				{&lt;br /&gt;
 &lt;br /&gt;
 				}&lt;br /&gt;
 				else { // 0100&lt;br /&gt;
 					equal(bit4, bit5, bit6, bit7);&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 		else {&lt;br /&gt;
 			if (bit2 == TRUE)&lt;br /&gt;
 			{&lt;br /&gt;
 				if (bit3 == TRUE) // 0011&lt;br /&gt;
 				{&lt;br /&gt;
 					mul(bit4, bit5, bit6, bit7);&lt;br /&gt;
 				}&lt;br /&gt;
 				else {	// 0010&lt;br /&gt;
 					add(bit4, bit5, bit6, bit7);&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			else&lt;br /&gt;
 			{&lt;br /&gt;
 				if (bit3 == TRUE) // 0001&lt;br /&gt;
 				{&lt;br /&gt;
 					save(bit4, bit5, bit6, bit7);&lt;br /&gt;
 				}&lt;br /&gt;
 				else { // 0000&lt;br /&gt;
 					load(bit4, bit5, bit6, bit7);&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int get_reg(int bit0, int bit1)&lt;br /&gt;
 {&lt;br /&gt;
 	if (bit0 == TRUE)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (bit1 == TRUE)&lt;br /&gt;
 		{&lt;br /&gt;
 			return reg11;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			return reg10;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		if (bit1 == TRUE)&lt;br /&gt;
 		{&lt;br /&gt;
 			return reg01;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			return reg00;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int get_mem(int bit0, int bit1)&lt;br /&gt;
 {&lt;br /&gt;
 	if (bit0 == TRUE)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (bit1 == TRUE)&lt;br /&gt;
 		{&lt;br /&gt;
 			return mem11;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			return mem10;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		if (bit1 == TRUE)&lt;br /&gt;
 		{&lt;br /&gt;
 			return mem01;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			return mem00;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int get_bin4(int bit0, int bit1, int bit2, int bit3)&lt;br /&gt;
 {&lt;br /&gt;
 	return 8 * bit0 + 4 * bit1 + 2 * bit2 + bit3;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void set_reg(int bit0, int bit1, int val)&lt;br /&gt;
 {&lt;br /&gt;
 	if (bit0 == TRUE)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (bit1 == TRUE)&lt;br /&gt;
 		{&lt;br /&gt;
 			reg11 = val;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			reg10 = val;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		if (bit1 == TRUE)&lt;br /&gt;
 		{&lt;br /&gt;
 			reg01 = val;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			reg00 = val;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void set_mem(int bit0, int bit1, int val)&lt;br /&gt;
 {&lt;br /&gt;
 	if (bit0 == TRUE)&lt;br /&gt;
 	{&lt;br /&gt;
 		if (bit1 == TRUE)&lt;br /&gt;
 		{&lt;br /&gt;
 			mem11 = val;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			mem10 = val;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		if (bit1 == TRUE)&lt;br /&gt;
 		{&lt;br /&gt;
 			mem01 = val;&lt;br /&gt;
 		}&lt;br /&gt;
 		else&lt;br /&gt;
 		{&lt;br /&gt;
 			mem00 = val;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void load(int mem_bit0, int mem_bit1, int reg_bit0, int reg_bit1)&lt;br /&gt;
 {&lt;br /&gt;
 	set_reg(reg_bit0, reg_bit1, get_mem(mem_bit0, mem_bit1));&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void add(int reg0_bit0, int reg0_bit1, int reg1_bit0, int reg1_bit1)&lt;br /&gt;
 {&lt;br /&gt;
 	set_reg(reg1_bit0, reg1_bit1, get_reg(reg0_bit0, reg0_bit1) + get_reg(reg1_bit0, reg1_bit1));&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void mul(int reg0_bit0, int reg0_bit1, int reg1_bit0, int reg1_bit1)&lt;br /&gt;
 {&lt;br /&gt;
 	set_reg(reg1_bit0, reg1_bit1, get_reg(reg0_bit0, reg0_bit1) * get_reg(reg1_bit0, reg1_bit1));&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void save(int reg_bit0, int reg_bit1, int mem_bit0, int mem_bit1)&lt;br /&gt;
 {&lt;br /&gt;
 	set_mem(mem_bit0, mem_bit1, get_reg(reg_bit0, reg_bit1));&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void equal(int reg0_bit0, int reg0_bit1, int reg1_bit0, int reg1_bit1)&lt;br /&gt;
 {&lt;br /&gt;
 	if (get_reg(reg0_bit0, reg0_bit1) == get_reg(reg1_bit0, reg1_bit1)) {&lt;br /&gt;
 		printf(&amp;quot;1\n&amp;quot;);&lt;br /&gt;
 		equ = TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else {&lt;br /&gt;
 		printf(&amp;quot;0\n&amp;quot;);&lt;br /&gt;
 		equ = FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void beq(int bit0, int bit1, int bit2, int bit3)&lt;br /&gt;
 {&lt;br /&gt;
 	int num_skipped_command = get_bin4(bit0, bit1, bit2, bit3);&lt;br /&gt;
 	int count;&lt;br /&gt;
 	for (count = 0; count &amp;amp;lt; num_skipped_command; count++)&lt;br /&gt;
 	{&lt;br /&gt;
 		scanf(&amp;quot;%*d %*d %*d %*d %*d %*d %*d %*d&amp;quot;);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;wraithkim</name></author>
	</entry>
</feed>