220 lines
31 KiB
HTML
220 lines
31 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>BOJ 3425 - Offline</title>
|
|
<style>
|
|
:root {
|
|
--bg: #fafaf8;
|
|
--paper: #ffffff;
|
|
--ink: #1e1f24;
|
|
--muted: #6a6d75;
|
|
--line: #d8dce3;
|
|
--accent: #0d6e6e;
|
|
--code-bg: #f4f6fb;
|
|
}
|
|
* { box-sizing: border-box; }
|
|
body {
|
|
margin: 0;
|
|
background:
|
|
radial-gradient(circle at 15% 0%, #f0efe9 0%, transparent 42%),
|
|
radial-gradient(circle at 85% 20%, #e7f1f2 0%, transparent 38%),
|
|
var(--bg);
|
|
color: var(--ink);
|
|
font-family: "Noto Sans KR", "Pretendard", "Apple SD Gothic Neo", sans-serif;
|
|
line-height: 1.65;
|
|
}
|
|
main {
|
|
max-width: 980px;
|
|
margin: 0 auto;
|
|
padding: 24px 16px 56px;
|
|
}
|
|
.header {
|
|
background: var(--paper);
|
|
border: 1px solid var(--line);
|
|
border-radius: 14px;
|
|
padding: 18px 20px;
|
|
margin-bottom: 18px;
|
|
}
|
|
.header h1 { margin: 0 0 6px; font-size: 1.5rem; }
|
|
.header p { margin: 0; color: var(--muted); font-size: 0.95rem; }
|
|
.header a { color: var(--accent); text-decoration: none; }
|
|
.section {
|
|
background: var(--paper);
|
|
border: 1px solid var(--line);
|
|
border-radius: 14px;
|
|
padding: 16px 18px;
|
|
margin-bottom: 14px;
|
|
overflow-x: auto;
|
|
}
|
|
h2 {
|
|
margin: 0 0 10px;
|
|
font-size: 1.05rem;
|
|
color: var(--accent);
|
|
border-bottom: 1px solid var(--line);
|
|
padding-bottom: 8px;
|
|
}
|
|
pre, code {
|
|
font-family: "JetBrains Mono", "Fira Code", monospace;
|
|
background: var(--code-bg);
|
|
}
|
|
pre {
|
|
padding: 12px;
|
|
border-radius: 10px;
|
|
border: 1px solid #e7ebf2;
|
|
overflow: auto;
|
|
}
|
|
blockquote {
|
|
margin: 14px 0;
|
|
padding: 16px 16px 14px 22px;
|
|
border-left: 4px solid var(--accent);
|
|
border-radius: 10px;
|
|
background: linear-gradient(90deg, #eef8f8 0%, #f9fdfd 100%);
|
|
color: #24313a;
|
|
font-weight: 600;
|
|
position: relative;
|
|
}
|
|
blockquote::before {
|
|
content: "“";
|
|
position: absolute;
|
|
left: 8px;
|
|
top: 2px;
|
|
font-size: 1.35rem;
|
|
line-height: 1;
|
|
color: #0b5f5f;
|
|
opacity: 0.7;
|
|
}
|
|
blockquote > :first-child { margin-top: 0; }
|
|
blockquote > :last-child { margin-bottom: 0; }
|
|
q {
|
|
color: #114f50;
|
|
font-weight: 700;
|
|
background: #edf8f8;
|
|
border-radius: 6px;
|
|
padding: 0 4px;
|
|
}
|
|
.math-inline math {
|
|
font-size: 1em;
|
|
vertical-align: middle;
|
|
}
|
|
.math-block {
|
|
margin: 10px 0;
|
|
padding: 8px 10px;
|
|
overflow-x: auto;
|
|
background: #f8fbff;
|
|
border: 1px solid #e2ecf8;
|
|
border-radius: 8px;
|
|
}
|
|
.math-block math {
|
|
font-size: 1.04em;
|
|
display: block;
|
|
}
|
|
table { border-collapse: collapse; width: 100%; }
|
|
th, td { border: 1px solid var(--line); padding: 6px 8px; }
|
|
img { max-width: 100%; height: auto; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<main>
|
|
<header class="header">
|
|
<h1>고스택</h1>
|
|
</header>
|
|
<article class="section">
|
|
<h2>문제</h2>
|
|
<p>고창영은 스택을 조금 변형해서 고스택을 만들었다.</p>
|
|
|
|
<p>고스택은 숫자만을 저장할 수 있고, 다음과 같은 10가지 연산을 수행할 수 있다.</p>
|
|
|
|
<p>편의상 스택의 가장 위에 저장된 수를 첫 번째 수라고 하고, 그 다음은 차례대로 두 번째 수, 세 번째 수라고 한다.</p>
|
|
|
|
<ul>
|
|
<li><strong>NUM X</strong>: X를 스택의 가장 위에 저장한다. (0 ≤ X ≤ 10<sup>9</sup>)</li>
|
|
<li><strong>POP</strong>: 스택 가장 위의 숫자를 제거한다.</li>
|
|
<li><strong>INV</strong>: 첫 번째 수의 부호를 바꾼다. (42 -> -42)</li>
|
|
<li><strong>DUP</strong>: 첫 번째 숫자를 하나 더 스택의 가장 위에 저장한다.</li>
|
|
<li><strong>SWP</strong>: 첫 번째 숫자와 두 번째 숫자의 위치를 서로 바꾼다.</li>
|
|
<li><strong>ADD</strong>: 첫 번째 숫자와 두 번째 숫자를 더한다.</li>
|
|
<li><strong>SUB</strong>: 첫 번째 숫자와 두 번째 숫자를 뺀다. (두 번째 - 첫 번째)</li>
|
|
<li><strong>MUL</strong>: 첫 번째 숫자와 두 번째 숫자를 곱한다.</li>
|
|
<li><strong>DIV</strong>: 첫 번째 숫자로 두 번째 숫자를 나눈 몫을 저장한다. 두 번째 숫자가 피제수, 첫 번째 숫자가 제수이다.</li>
|
|
<li><strong>MOD</strong>: 첫 번째 숫자로 두 번째 숫자를 나눈 나머지를 저장한다. 두 번째 숫자가 피제수, 첫 번째 숫자가 제수이다.</li>
|
|
</ul>
|
|
|
|
<p><img alt="" src="data:image/png;base64,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" style="height:100px; width:514px" /></p>
|
|
|
|
<p>이항 연산자의 경우에 첫 번째 숫자가 오른쪽에 있는 수이고, 두 번째 숫자가 왼쪽에 있는 수이다. 또, 연산을 수행하기 전에 두 숫자를 모두 스택에서 제거한 뒤, 결과를 다시 스택에 저장하는 것이다.</p>
|
|
|
|
<p>숫자가 부족해서 연산을 수행할 수 없을 때, 0으로 나눴을 때 (DIV, MOD), 연산 결과의 절댓값이 10<sup>9</sup>를 넘어갈 때는 모두 프로그램 에러이다.</p>
|
|
|
|
<p>음수 나눗셈에 대한 모호함을 피하기 위해 다음과 같이 계산한다. 나눗셈의 피연산자에 음수가 있을 때는, 그 수를 절댓값을 씌운 뒤 계산한다. 그리고 나서 몫과 나머지의 부호는 다음과 같이 결정한다. 피연산자중 음수가 한 개일때는 몫의 부호가 음수이다. 이 경우를 제외하면 몫의 부호는 항상 양수이다. 나머지의 부호는 피제수의 부호와 같다. 따라서, 13 div -4 = -3, -13 mod 4 = -1, -13 mod -4 = -1이다.</p>
|
|
|
|
<p>프로그램 에러가 발생했을 경우에는, 현재 프로그램의 수행을 멈추고, 그 다음 어떤 명령도 수행하지 않는다.</p>
|
|
</article>
|
|
<article class="section">
|
|
<h2>입력</h2>
|
|
<p>입력은 기계 여러 대의 설명으로 이루어져 있다. 각 기계의 설명은 프로그램과 입력영역으로 나누어져 있다.</p>
|
|
|
|
<p>프로그램은 명령어로 이루어져 있고, 명령어는 한 줄에 하나씩 있다. 각 명령은 문제 설명에 나와있는 대문자 알파벳 3글자이고, 다른 글자는 주어지지 않는다. NUM의 경우에는 명령어 다음에 숫자가 주어지며, 이 숫자는 0보다 크거나 같고, 10<sup>9</sup>보다 작거나 같은 정수이다. NUM과 숫자는 공백으로 구분되어져 있다. 각 프로그램은 END가 나오면 끝난다.</p>
|
|
|
|
<p>입력영역은 첫째 줄에 프로그램 수행 횟수 N이 있다. (0 ≤ N ≤ 10,000) 다음 N개의 줄에는 한 줄에 하나씩 입력값 V<sub>i</sub>가 있다. (0 ≤ V<sub>i</sub> ≤ 10<sup>9</sup>) 각 입력값에 대해서 프로그램을 한 번씩 수행해야 하고, 이 수행은 모두 독립적이다. 매번 프로그램을 수행할 때, 스택에 들어있는 값은 입력값 V<sub>i</sub> 하나이다.</p>
|
|
|
|
<p>각각의 기계 설명은 빈 줄로 구분되어져 있다. QUIT이 나오면 다음 기계 설명이 없다는 뜻이다. 명령어가 100,000개를 넘어가는 경우와 스택이 수행될 때, 1,000개 이상의 숫자를 저장하는 경우는 없다.</p>
|
|
</article>
|
|
<article class="section">
|
|
<h2>출력</h2>
|
|
<p>각각의 입력값에 대해서, 해당하는 프로그램을 수행한 뒤, 출력값을 출력하면 된다. 출력값이란 스택에 저장되어 있는 숫자이다.</p>
|
|
|
|
<p>만약, 프로그램 에러가 발생하거나, 모든 수행이 종료됐을 때 스택에 저장되어 있는 숫자가 1개가 아니라면, "ERROR"를 출력한다.</p>
|
|
|
|
<p>각 기계에 대한 출력값을 모두 출력한 뒤에는 빈 줄을 하나 출력해야 한다.</p>
|
|
</article>
|
|
<article class="section">
|
|
<h2>예제 입력 1 복사</h2>
|
|
<pre class="sampledata" id="sample-input-1">DUP
|
|
MUL
|
|
NUM 2
|
|
ADD
|
|
END
|
|
3
|
|
1
|
|
10
|
|
50
|
|
|
|
NUM 1
|
|
NUM 1
|
|
ADD
|
|
END
|
|
2
|
|
42
|
|
43
|
|
|
|
NUM 600000000
|
|
ADD
|
|
END
|
|
3
|
|
0
|
|
600000000
|
|
1
|
|
|
|
QUIT
|
|
</pre>
|
|
</article>
|
|
<article class="section">
|
|
<h2>예제 출력 1 복사</h2>
|
|
<pre class="sampledata" id="sample-output-1">3
|
|
102
|
|
2502
|
|
|
|
ERROR
|
|
ERROR
|
|
|
|
600000000
|
|
ERROR
|
|
600000001
|
|
</pre>
|
|
</article>
|
|
</main>
|
|
</body>
|
|
</html>
|