์ง๋ ์ผ์์ผ์ 27์๊ฐ๋์ ๊ตฌ๊ธ์ฝ๋์ผ 2020 Qualification Round๊ฐ ์์๊ณ ํต๊ณผํ๋ค. ์ ์์ฒด๊ณ๋ ๋ชจ๋ฅด๊ณ ์ฐธ๊ฐํ๋ฉด ๋ค ํต๊ณผํ๋ ์ฐ์ต๋ผ์ด๋์ด๊ฑฐ๋ํ๊ณ ์ฐธ๊ฐํ์๋๋ฐ Qualification Round์์ ์ด 30์ ์ด์ ๋ฐ์์ผํ๋ค๋ ๊ท์น์ด ์์๋ค. ๊ทธ๋๋ 5๋ฌธ์ ์ค ํ๋งํ ๋์ด๋์ ๋ฌธ์ 3๊ฐ๋ง ํ๋ฉด ํต๊ณผ ๊ฐ๋ฅํ ์ ์๋ฅผ ๋ฐ์ ์ ์๊ณ ์๊ฐ์ ํ๋ ๋๋ํ๊ธฐ ๋๋ฌธ์ ์ถฉ๋ถํ ์๊ฐ์ ํฌ์ํ๊ณ ์ฐธ๊ฐํ๋ค๋ฉด ๊ฑฐ์ง ํต๊ณผํ ์ ์์์ ๊ฒ ๊ฐ๋ค.
Qualification Round์์ ํผ ๋ฌธ์ ๋ค์ ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
1. Vestigium
๊ฐ ํ๊ณผ ์ด์ ์ค๋ณต๋ ์ซ์์์ด 1~N์ฌ์ด์ ์์๊ฐ ํ๋ฒ์ฉ ๋ฑ์ฅํ๋ N x N ์ ์ฌ๊ฐํ์ Latin Square๋ผ๊ณ ํ๋ค. ์ฃผ์ด์ง ์ ์ฌ๊ฐํ์ด Latin Square๊ฐ ๋ง๋์ง ํ์ธํ๋ผ.
์ ๋ ฅ๊ฐ:
- ์ฃผ์ด์ง N x N ์ฌ์ด์ฆ์ ์ ์ฌ๊ฐํ
์ถ๋ ฅ๊ฐ:
- k = trace = ์ผ์ชฝ ์์์ ์์ํด์ ์ค๋ฅธ์ชฝ ์๋์์ ๋๋๋ ์ค์ ๋๊ฐ์ ์ ์์นํ ๊ฐ๋ค์ ํฉ
- r = ์ค๋ณต๋ ์ซ์๊ฐ ์กด์ฌํ๋ ํ์ ๊ฐฏ์
- c = ์ค๋ณต๋ ์ซ์๊ฐ ์กด์ฌํ๋ ์ด์ ๊ฐฏ์
๋ฌธ์ ํ์ด:
- ๊ฐ ํ๊ณผ ์ด์ ์ค๋ณต๋ ๊ฐ์ด ์๋์ง๋ Hash Set์ผ๋ก ํ์ธ
- arr[0][0], arr[1][1]๊ณผ ๊ฐ์ด ํ ์ธ๋ฑ์ค์ ์ด ์ธ๋ฑ์ค๊ฐ ๊ฐ์ ๋๊ฐ trace๊ฐ์ ๊ตฌ์ฑํ๋ ๋๊ฐ์ ์ ํฌํจ๋ ์์น์ด๋ค.
T = int(input())
for t in range(1, T + 1):
N = int(input())
board = []
for n in range(1, N + 1):
row = input().split(' ')
board.append([int(x) for x in row])
k = 0
r = 0
c = 0
checkCol = [{'.'} for _ in range(0, N)]
for i in range(0, N):
checkRow = {'.'}
for j in range(0, N):
if i == j:
k += board[i][j]
checkRow.add(board[i][j])
checkCol[j].add(board[i][j])
if i == N - 1 and len(checkCol[j]) != N + 1:
c += 1
if len(checkRow) != N + 1:
r += 1
print("Case #{}: {} {} {}".format(t, k, r, c))
Node.js ํ๊ฒฝ์์ ์
์ถ๋ ฅ์ ๋ฐ๋ ๊ฒ์ ์ง์ ์ง๋ณด๋๊ฒ ๋ฏ์ค์ด์ ๋ํ๋ ํผํ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก๋ ๋ค์ ํ์ด๋ดค๋ค. JS๋ฅผ ๋ ์ฐ์ตํ ํ์๊ฐ ์์ด์ JS๋ก ํธ๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์ ์์ฝ์ง๋ง, ํ์ด์ฌ ์ฝ๋๊ฐ ํจ์ฌ ๊ฐ๋จํ๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ์ฝ๋์ผ์ ํ์ด์ฌ์ผ๋ก ํ์ด์ผํ ๊ฒ ๊ฐ๋ค. ๋ณ๊ฐ๋ก ์๋ ์ฝ๋์ ์ฐ์ธ JS๋ก ๋ชจ๋ importํ๋ ๋ฒ, ์
์ถ๋ ฅ ๋ชจ๋์ธ readline, async await, IIFE๋ ์ด์ฐธ์ ํ ๋ฒ ์ ๋ฆฌํด๋ด์ผ๊ฒ ๋ค. (์ ๋ฆฌํ๋ฉด ๋งํฌ ์ถ๊ฐํ ์์ )
const solution = board => {
let k = 0, r = 0, c = 0;
const cols = [];
for (let i = 0; i < board.length; i++) {
const rows = new Set();
for (let j = 0; j < board.length; j++) {
if (i === 0) {
cols.push(new Set());
}
if (i === j) {
k += board[i][j];
}
rows.add(board[i][j]);
cols[j].add(board[i][j]);
if (i + 1 === board.length && cols[j].size !== board.length) {
c++;
}
}
if (rows.size !== board.length) {
r++;
}
}
return [k, r, c];
}
const { createInterface } = require('readline');
(async () => {
const rl = createInterface({
input: process.stdin,
output: process.stdout
});
let T = 0, t = 1, N = 0, board = [];
rl.on('line', line => {
if (T === 0) {
T = parseInt(line);
return;
} else {
if (N === 0) {
N = parseInt(line);
board = []
return;
} else {
board.push(line.split(' ').map(e => parseInt(e)));
if (board.length === N) {
const [k, r, c] = solution(board);
console.log(`Case #${t++}: ${k} ${r} ${c}`);
N = 0;
}
}
}
})
await rl.close;
})();
2. Nesting Depth
์ ๋ ฅ๊ฐ:
- "010" "123"๊ณผ ๊ฐ์ด 1-9์ฌ์ด์ ์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด S
- 1 <= S.length <= 100
์ถ๋ ฅ๊ฐ:
- ์ ๋ ฅ๊ฐ์ ์ต์ํ์ ๊ดํธ๋ฅผ ์ฝ์ ํ ๋ฌธ์์ด์ ์ถ๋ ฅ.
- ๊ฐ ์ซ์๋ ๊ทธ ์ซ์์ ํฌ๊ธฐ๋งํผ์ ๊ดํธ์ ๊ฐ์ธ์ ธ์ผํ๋ค.
- 1์ (1) 1 depth๋งํผ 2๋ ((2)) 2 depth ๋งํผ.
- 12000์ ๊ฒฝ์ฐ (1(2))000 ์ด๋ฐ์์ผ๋ก ํํํ ์ ์๋ค.
๋ฌธ์ ํ์ด:
- ํ์ฌ ์ซ์๋ณด๋ค ์ด์ ์ซ์๋ณด๋ค ์์ผ๋ฉด ํ์ฌ ์ซ์ ์ง์ ์ ๋ ์์ ์ฐจ์ด๋งํผ ๊ดํธ๋ฅผ ๋ซ์์ค์ผํ๋ค.
- ํ์ฌ ์ซ์๋ณด๋ค ์ด์ ์ซ์๊ฐ ํฌ๋ฉด ํ์ฌ ์ซ์ ์ง์ ์ ๋ ์์ ์ฐจ์ด๋งํผ ๊ดํธ๋ฅผ ์ด์ด์ค์ผํ๋ค.
- ๋ง์ง๋ง๊ฐ์ด 0์ด ์๋๋ผ๋ฉด ์ ๋ ฅ๊ฐ์ ๋ค ์ํํ ํ์ ์์ง ๋ซํ์ง ์์ ๊ดํธ๊ฐ ์๋ค. ์ด๋ฅผ ์ฒ๋ฆฌํด์ค์ผํ๋ค.
T = int(input())
for t in range(1, T + 1):
str1 = input()
res = []
isOpen = 0
for i in range(0, len(str1)):
x = int(str1[i])
if isOpen < x:
res.append('(' * (x - isOpen))
if x < isOpen:
res.append(')' * (isOpen - x))
isOpen = x
res.append(str1[i])
res.append(')' * isOpen)
print("Case #{}: {}".format(t, ''.join(res)))
3. Parenting Partnering
์ ๋ ฅ๊ฐ:
- n๊ฐ์ ์ผ์ ๋ค์ด [์์์๊ฐ(int), ๋์๊ฐ(int)] ๋ด๊ธด ๋ฐฐ์ด์ด ์ฃผ์ด์ง๋ค.
- ์ผ์ ๋ค์ ์ ๋ ฌ๋์ง ์์๋ค.
์ถ๋ ฅ๊ฐ:
- Cameron๊ณผ Jamie๊ฐ ์ ์ผ์ ๋ค์ ์ํํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง ๋ถ๊ฐ๋ฅํ์ง ํ๋ฆฐํธ.
- ๊ฐ๋ฅํ๋ค๋ฉด Cameron์ C๋ฅผ Jamie์ J๋ฅผ ๋ฐ์ ์ฃผ์ด์ง ์ผ์ ๋ค์ ๋ฐ๋ผ ๋์ดํ ๋ฌธ์์ด์ ํ๋ฆฐํธ.
๋ฌธ์ ํ์ด:
- ์ฐ์ ์ผ์ ๋ค์ ์์์๊ฐ ์์๋๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ๋ค. ์ด ๋ ๋์ค์ ๋ณธ๋์ ์์๋ก ๋ค์ ๋ณต๊ตฌํ๊ธฐ ์ํด ์ธ๋ฑ์ค๋ฅผ ํจ๊ป ์ ์ฅํด์ค๋ค. ์๋ ์ฝ๋์์ ์ฐ์ธ ์ ๋ ฌ๋ ์ผ์ ์ [์์์๊ฐ, ๋์๊ฐ, ์ธ๋ฑ์ค] ํํ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- C ๋๋ J์ ์ด์ ์ผ์ ๋์๊ฐ์ด ํ์ฌ ์ผ์ ์ ์์์๊ฐ์ ๋๋๊ฑฐ๋ ๋ ๋นจ๋ฆฌ ๋๋ฌ๋ค๋ฉด ํ์ฌ ์ผ์ ์ ์๋ก ํ ๋น ๋ฐ์ ์ ์๋ค.
- ๋ ๋ค ์์ง ์ด์ ์ผ์ ์ด ์ ๋๋ฌ๋ค๋ฉด ์ด๋ ๋ถ๊ฐ๋ฅํ ์ค์ผ์ฅด์ด๋ค.
def solution(sched, t):
isJ = 0
isC = 0
res = []
for i in range(N):
if isJ and isJ <= sched[i][0]:
isJ = 0
if isC and isC <= sched[i][0]:
isC = 0
if isJ == 0:
res.append(['J', sched[i][2]])
isJ = sched[i][1]
continue
if isC == 0:
res.append(['C', sched[i][2]])
isC = sched[i][1]
continue
print("Case #{}: {}".format(t, 'IMPOSSIBLE'))
break
else:
res = sorted(res, key = lambda x : x[1])
print("Case #{}: {}".format(t, ''.join([r[0] for r in res])))
T = int(input())
for t in range(1, T + 1):
N = int(input())
sched = []
for n in range(N):
cur = [int(x) for x in input().split(' ')]
cur.append(n)
sched.append(cur)
solution(sorted(sched, key = lambda x : x[0]), t)
ํ์๋ฒ์ผ๋ก ํด๊ฒฐํ ์ ์๋ ์ ๋ช ํ ๋ฌธ์ (2 worker scheduling)๋ผ๊ณ ํ๋ค.
4. ESAb ATAd
์ด ๋ฌธ์ ๋ ์ ํ๊ณ ๋์ด๊ฐ๋ค. ๋ณ๋ช ์ ํ์๋ฉด ๋น์ผ์ ๋ค๋ฅธ ์ํ๋ ์์๊ณ , ๊ทธ ์ํ ๋๋๊ณ ๋ค์ ์ฝ๋์ผ์ ํ๋ฌ์๋๋ฐ ์ธํฐ๋ํฐ๋ธ ๋ฌธ์ ์ ํ์ ํ์ ํ๊ณ , ํ ์คํ ํด๋ ๋ค์ด๋ฐ๊ณ ์ดํดํ๊ณ 5๋ฌธ์ ์ค ๊ฐ์ฅ ๊ธด ์ง๋ฌธ์ ์ฝ๊ณ ๋ฌธ์ ํ์ ํด์ ํด๊ฒฐ ํ ์๋๊ฐ ์๋ฌ๋ค. ํํธ์ผ๋ก ๋ด๊ฐ ๋ ํด๊ฐ ํ์ํ ๋ฌธ์ ์ ์ฝํ ๊ฒ ๊ฐ๋ค๋๊ฑธ ์์ผ ๋ค์ ๋๊ผ๋ค. ์๋ฌธ ๋ ํด๊ฐ ๋ฌธ์ ๊ฐ ์๋๋ผ ํ๊ตญ์ด๋ก ๋ ๋ฌธ์ ๋ ์ธ๋ฐ์๋ ๋ง๊ณผ ์ค์ํ ๋ง๋ค์ด ์์ฌ์๋ ๋ฌธ์ ๋ค์ ์ดํดํ๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ํธ์ธ ๊ฒ ๊ฐ๋ค. ํ์์๋ ์์ ์ ๊ฐ๋จํ ๋ฃ๋๊ฑธ ์ ํธํ๊ณ ์ฅํฉํ ๋ด์ฉ์ ๋ฌธ์ ๋ฅผ ๋ง์ด ์ฐ์ต ์ ํ ํ๋ ์๋ ๊ฒ ๊ฐ๋ค. ์ด๋ฐ ๋ฌธ์ ์ ์ถ์ ์๋ ์์ฒด๊ฐ ์๋๊ฐ ๋ํดํ๊ณ ํก์ค์์คํ ์ค๋ช ์ ๋ฃ๊ณ ๋น ๋ฅด๊ฒ ์์ ์ ํ์ ํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋๋๋ ์์ ์ปค๋ฎค๋์ผ์ด์ ๋ฅ๋ ฅ์ ๋ณด๋ ค๋๊ฑด๊ฐ ์ถ๊ธฐ๋ํ๋ค. ๊ทธ๋ฐ ์ปค๋ฎค๋์ผ์ด์ ๋ฅ๋ ฅ์ ์ค์ํ๋๊น ์ฐ์ตํด์ผ๊ฒ ๋ค. ๐
๋ํ๊ฐ ๋๋ ํ ๋ค์ ์ดํด๋ณด๊ณ ์๋๋ฐ ์ฌ์ ํ ์ด๋ ต๊ฒ ๋๊ปด์ง๋ค. ์ด๋ฒ์ฃผ ์์ ์ดํด๋ฅผ ๋ง์น๊ณ ํ์ด๋ฅผ ์ ๋ฐ์ดํธํด๋ณผ ์์ ์ด๋ค.
5. Indicium
1๋ฒ ๋ฌธ์ Vestigium์์ ๋์จ ์ฃผ์ ์ธ Latin Square์ ๊ดํ ๋ฌธ์ ์ด๋ค. ์ฐ๊ณ๋ ๋ฌธ์ ์ธ๊ฐ ์ถ์ด ์ฌ๋ฐ์ด๋ณด์ฌ์ ํ๊ธฐ ์์ํ๋ค. Latin Square๋ 1~N์ ์ซ์๋ก๋ง ๊ตฌ์ฑ๋๊ณ ๊ฐ ํ์ ์ด์ ์ค๋ณต๋ ๊ฐ์ด ์๋ N x N ์ ์ฌ๊ฐํ์ ๋งํ๋ค.
์ ๋ ฅ๊ฐ:
- N: ์ ์ฌ๊ฐํ์ ํฌ๊ธฐ
- K: ์ผ์ชฝ ์ - ์ค๋ฅธ์ชฝ ์๋ ๋๊ฐ์ ์ ํฉ์ธ trace ๊ฐ
์ถ๋ ฅ๊ฐ:
- trace์ ๊ฐ์ผ๋ก K๋ฅผ ๊ฐ์ N x N Latin Square์ ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง ๋ถ๊ฐ๋ฅํ์ง ์ถ๋ ฅ
- ๊ฐ๋ฅํ๋ค๋ฉด ํด๋นํ๋ Latin Square๋ฅผ ๋ง๋ค์ด ์ถ๋ ฅ
Test set 1 (Visible Verdict) :
- T = 44
- 2 ≤ N ≤ 5
Test set 2 (Hidden Verdict):
- 1 ≤ T ≤ 100
- 2 ≤ N ≤ 50.
๋ฌธ์ ํ์ด:
์ฒ์์๋ ์์ ๋ฅผ ์์ผ๋ก ์ ์ด๋ณด๋ฉฐ ์ผ์ ํ ๊ท์น์ ์ฐพ์๋ณด๊ณ ์ ์ฉํด๋ณด์๋ค๊ฐ ์คํจํ๋ค. 1๋ถํฐ N๊น์ง์ ์ซ์๋ฅผ ๊ฐ์ ํ์ ํ๋์ฉ shift & push ํด์ board๋ฅผ ๋ง๋ค๊ณ , ํ์ ์์๋ฅผ ๋ฐ๊ฟ๊ฐ๋ฉฐ ๋ณด๋์ trace๊ฐ๊ณผ ๊ทธ ๋ณด๋๋ฅผ 180๋ ๋๋ ธ์ ๋ trace๊ฐ์ ํ์ธํด ๋ณด๋ ๋ฐฉ์์ด์๋ค.
์์ผ๋ก ๊ท์น์ ์ฐพ๋๊ฒ ๋ถ๊ฐ๋ฅํ๋จ ์๊ฐ์ด๋ค์ด ๋ฐฉ๋ฒ์ ๋ฐ๊พธ์๋ค. 1~N๊ฐ์ ํฉ์ผ๋ก K๋ฅผ ๋ง๋ค์ ์๋ ๋ชจ๋ ์กฐํฉ์ ๋ฐฑํธ๋ํน์ผ๋ก ๊ตฌํ๊ณ , ๋ ๋ฐฑํธ๋ํน์ผ๋ก board์ ๋น์นธ๋ค์ ์ฑ์๋๊ฐ๋ค. ์ด ๋ฐฉ์์ผ๋ก Test set 1์ ํต๊ณผํ๋๋ฐ Test set 2๋ฅผ ์คํจํ๋ค. N์ด ์กฐ๊ธ ์ปค์ง๋ฉด ๋ง๋ค ์ ์๋ ๋ผํด์คํ์ด์ ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ปค์ ธ์ ๋ด๊ฐ ์ ๊ทผํ ๋ฐฉ์์ผ๋ก๋ ํ ์ ์๋ ๊ฒ ๊ฐ๋ค. (N = 11์๊ฒฝ์ฐ 776966836171770144107444346734230682311065600000์ ์๋ก ๋ค๋ฅธ ๋ผํด์คํ์ด๊ฐ ์๋ค๊ณ ํ๋ค)
Test Case2๋ ํต๊ณผํ๋ ์ฝ๋๋ก ๊ณ ์ณ์ ์
๋ฐ์ดํธ ํ ์์ ์ด๋ค.
def getBoard(line):
isSloved = [False]
board = []
rows = []
cols = []
for i in range(N):
board.append([])
rows.append(set())
rows[i].add(line[i])
for j in range(N):
if i == j:
board[i].append(line[i])
cols.append(set())
cols[i].add(line[i])
else:
board[i].append(0)
def isAvailable(r, c, v):
if v in rows[r] or v in cols[c]:
return False
return True
def place(r, c, v):
board[r][c] = v
rows[r].add(v)
cols[c].add(v)
def remove(r, c, v):
board[r][c] = 0
rows[r].remove(v)
cols[c].remove(v)
def go(r, c):
if isSloved[0]:
return
if r + 1 == N and c + 1 == N:
isSloved[0] = True
else:
if c + 1 == N:
backtrack(r + 1, 0)
else:
backtrack(r, c + 1)
def backtrack(r, c):
if board[r][c] == 0:
for x in range(1, N + 1):
if isAvailable(r, c, x):
place(r, c, x)
go(r, c)
if not isSloved[0]:
remove(r, c, x)
else:
go(r, c)
backtrack(0, 0)
return [isSloved[0], board]
def find(n, k, nums):
if len(nums) == n:
return getBoard(nums) if sum(nums) == k else [False, []]
for x in range(1, n + 1):
nums.append(x)
res = find(n, k, nums)
if res[0]:
return res
nums.pop()
return [False, []]
T = int(input())
for t in range(1, T + 1):
N, K = [int(x) for x in input().split(' ')]
res = find(N, K, [])
if res[0]:
print("Case #{}: POSSIBLE".format(t))
for i in range(N):
print(" ".join([str(x) for x in res[1][i]]))
else:
print("Case #{}: IMPOSSIBLE".format(t))
์ดํ์๋ 1๋ผ์ด๋, 2๋ผ์ด๋, 3๋ผ์ด๋๊ฐ ์์๋๋ก ์งํ๋๋ฉฐ ์ผ์ ๋ฑ์ ์ด์์ ๋ฐ์์ผ ๊ทธ ๋ค์ ๋ผ์ด๋๋ก ์ง์ถํ ์ ์๋ค. 1๋ผ์ด๋์ ๊ฒฝ์ฐ 3๊ฐ์ sub round (1A๋ผ์ด๋, 1B๋ผ์ด๋, 1C๋ผ์ด๋) ์ค ํ ๋ฒ๋ง ์ผ์ ๋ฑ์๋ฅผ ๋ฐ์ผ๋ฉด ๋๋ค.
- 1๋ผ์ด๋ 1500๋ฑ ์ด๋ด (1500๋ฑ*3๋ฒ ์ด๋ผ ๋๋ต 4500๋ช )
- 2๋ผ์ด๋ 1000๋ฑ ์ด๋ด
- 3๋ผ์ด๋ 25๋ฑ ์ด๋ด
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ๋ผ์ด๋์ธ Final Round๋ ํ ๋ฒ ์งํ๋๋ฉฐ ๊ตฌ๊ธ ์บ ํผ์ค์์ ์งํ๋์ด์๋ค. ์ฌํด๋ ๋ ์ผ Munich ๊ตฌ๊ธ ์คํผ์ค์์ ์งํ๋ ์์ ์ด๋ผ๊ณ ํ๋ค. ํ์ง๋ง ์ฝ๋ก๋ ์ฌํ๋ก ์ด๋ป๊ฒ ๋ ์ง ์ง์ผ๋ด์ผ ์ ์ ์์ ๊ฒ ๊ฐ๋ค.
๋ฑ์์ ๋ฐ๋ผ ๋ถ์๋ ์๋ค.
- 1๋ฑ $15,000 USD
- 2๋ฑ $2,000 USD
- 3๋ฑ $1,000 USD
- 4~25๋ฑ $100 USD
- 26~1000๋ฑ ํฐ์ ์ธ
Qualification ๋ผ์ด๋์ ์ฐธ๊ฐํ ๋ ๋น ๋ฅด๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋๊ฐ๋ ํ๋ญํฌ ์ฐธ๊ฐ์๋ค์ ์ค์๊ฐ์ผ๋ก ๋ณผ ์ ์์๋ค. ํฐ์ ์ธ ๋ฅผ ๋ฐ๋ ์ ๋๋ง๋๋ ์์ฒญ ์ค๋ ฅ์๋๊ฑฐ๋ผ ์๊ฐํ๋ค. ๋ 2๋ผ์ด๋์ ์ง์ถํ๋๊ฑธ ๋ชฉํ๋ก ์ก์๋ณด๋ ค๊ณ ํ๋ค.