195 lines
6.1 KiB
HTML
195 lines
6.1 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 1003 - 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>다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다.</p>
|
||
|
||
<pre>int fibonacci(int n) {
|
||
if (n == 0) {
|
||
printf("0");
|
||
return 0;
|
||
} else if (n == 1) {
|
||
printf("1");
|
||
return 1;
|
||
} else {
|
||
return fibonacci(n‐1) + fibonacci(n‐2);
|
||
}
|
||
}
|
||
</pre>
|
||
|
||
<p><code>fibonacci(3)</code>을 호출하면 다음과 같은 일이 일어난다.</p>
|
||
|
||
<ul>
|
||
<li><code>fibonacci(3)</code>은 <code>fibonacci(2)</code>와 <code>fibonacci(1)</code> (첫 번째 호출)을 호출한다.</li>
|
||
<li><code>fibonacci(2)</code>는 <code>fibonacci(1)</code> (두 번째 호출)과 <code>fibonacci(0)</code>을 호출한다.</li>
|
||
<li>두 번째 호출한 <code>fibonacci(1)</code>은 1을 출력하고 1을 리턴한다.</li>
|
||
<li><code>fibonacci(0)</code>은 0을 출력하고, 0을 리턴한다.</li>
|
||
<li><code>fibonacci(2)</code>는 <code>fibonacci(1)</code>과 <code>fibonacci(0)</code>의 결과를 얻고, 1을 리턴한다.</li>
|
||
<li>첫 번째 호출한 <code>fibonacci(1)</code>은 1을 출력하고, 1을 리턴한다.</li>
|
||
<li><code>fibonacci(3)</code>은 <code>fibonacci(2)</code>와 <code>fibonacci(1)</code>의 결과를 얻고, 2를 리턴한다.</li>
|
||
</ul>
|
||
|
||
<p>1은 2번 출력되고, 0은 1번 출력된다. N이 주어졌을 때, <code>fibonacci(N)</code>을 호출했을 때, 0과 1이 각각 몇 번 출력되는지 구하는 프로그램을 작성하시오.</p>
|
||
</article>
|
||
<article class="section">
|
||
<h2>입력</h2>
|
||
<p>첫째 줄에 테스트 케이스의 개수 T가 주어진다.</p>
|
||
|
||
<p>각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다. N은 40보다 작거나 같은 자연수 또는 0이다.</p>
|
||
</article>
|
||
<article class="section">
|
||
<h2>출력</h2>
|
||
<p>각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.</p>
|
||
</article>
|
||
<article class="section">
|
||
<h2>예제 입력 1 복사</h2>
|
||
<pre class="sampledata" id="sample-input-1">3
|
||
0
|
||
1
|
||
3
|
||
</pre>
|
||
</article>
|
||
<article class="section">
|
||
<h2>예제 입력 2 복사</h2>
|
||
<pre class="sampledata" id="sample-input-2">2
|
||
6
|
||
22
|
||
</pre>
|
||
</article>
|
||
<article class="section">
|
||
<h2>예제 출력 1 복사</h2>
|
||
<pre class="sampledata" id="sample-output-1">1 0
|
||
0 1
|
||
1 2
|
||
</pre>
|
||
</article>
|
||
<article class="section">
|
||
<h2>예제 출력 2 복사</h2>
|
||
<pre class="sampledata" id="sample-output-2">5 8
|
||
10946 17711
|
||
</pre>
|
||
</article>
|
||
</main>
|
||
</body>
|
||
</html>
|