191 lines
6.7 KiB
HTML
191 lines
6.7 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 25329 - 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 class="0" style="text-indent:1.2pt">학생들이 한 달간 통화한 <em>n</em>개의 통화 기록 <em>A</em>가 주어진다. 한 개의 통화 기록은 통화 시간과 학생 이름이 공백으로 구분되어 주어진다. 한 학생의 통화 기록이 여러 번 주어질 수 있다. 통화 시간은 시:분 형태로 주어지고 시와 분은 길이가 2인 문자열이다. 학생 이름은 알파벳 소문자로 이루어져 있다. 통화 요금표는 다음과 같다.</p>
|
|
|
|
<ul>
|
|
<li class="0" style="text-indent: 1.2pt;">기본 시간(분): 100분, 기본 요금(원): 10, 단위 시간(분): 50, 단위 요금(원): 3</li>
|
|
</ul>
|
|
|
|
<p class="0" style="text-indent: 1.2pt;">통화 요금은 학생별로 한 달간 통화한 누적 통화 시간에 대하여 청구된다. 누적 통화 시간이 기본 시간 이하라면 기본 요금이 청구된다. 누적 통화 시간이 기본 시간을 초과하면, 기본 요금에 더해서 초과한 시간에 대해서 단위 시간마다 단위 요금이 청구된다. 초과한 시간이 단위 시간으로 나누어떨어지지 않으면 올림 한다.</p>
|
|
|
|
<p class="0" style="text-indent: 1.2pt;">통화 요금이 많은 학생부터 이름과 통화 요금을 출력하자. 통화 요금이 같은 학생은 학생 이름 기준으로 오름차순으로 출력하자.</p>
|
|
</article>
|
|
<article class="section">
|
|
<h2>입력</h2>
|
|
<p class="0" style="text-indent:1.2pt">첫 번째 줄에 통화 기록의 개수 <em>n</em>이 주어진다.</p>
|
|
|
|
<p class="0" style="text-indent:1.2pt">다음 줄부터 <em>n</em>개의 줄에 통화 기록이 순서대로 주어진다. 한 줄에 하나의 통화 기록이 주어진다. 한 개의 통화 기록은 통화 시간과 학생 이름이 공백으로 구분되어 순서대로 주어진다.</p>
|
|
</article>
|
|
<article class="section">
|
|
<h2>출력</h2>
|
|
<p class="0" style="text-indent:1.2pt">첫 번째 줄부터 통화 요금이 많은 학생부터 학생 이름과 통화 요금을 공백을 사이에 두고 순서대로 출력한다. 통화 요금이 같은 학생은 학생 이름 기준으로 오름차순으로 출력한다. 한 줄에 한 학생의 정보를 출력한다.</p>
|
|
</article>
|
|
<article class="section">
|
|
<h2>제한</h2>
|
|
<ul>
|
|
<li>1 ≤ <em>n</em> ≤ 10,000</li>
|
|
<li>00 ≤ 시 ≤ 23</li>
|
|
<li>00 ≤ 분 ≤ 59</li>
|
|
<li>2 ≤ 학생 이름 길이 ≤ 10</li>
|
|
</ul>
|
|
</article>
|
|
<article class="section">
|
|
<h2>예제 입력 1 복사</h2>
|
|
<pre class="sampledata" id="sample-input-1">7
|
|
00:10 aaa
|
|
00:30 aaa
|
|
01:15 bbb
|
|
01:00 ccc
|
|
01:00 bbb
|
|
02:10 aaa
|
|
03:10 ccc
|
|
</pre>
|
|
</article>
|
|
<article class="section">
|
|
<h2>예제 입력 2 복사</h2>
|
|
<pre class="sampledata" id="sample-input-2">3
|
|
00:10 ccc
|
|
00:10 aaa
|
|
00:10 bbb
|
|
</pre>
|
|
</article>
|
|
<article class="section">
|
|
<h2>예제 출력 1 복사</h2>
|
|
<pre class="sampledata" id="sample-output-1">ccc 19
|
|
aaa 16
|
|
bbb 13
|
|
</pre>
|
|
</article>
|
|
<article class="section">
|
|
<h2>예제 출력 2 복사</h2>
|
|
<pre class="sampledata" id="sample-output-2">aaa 10
|
|
bbb 10
|
|
ccc 10
|
|
</pre>
|
|
</article>
|
|
</main>
|
|
</body>
|
|
</html>
|