๐ 1. ๋ฌธ์ ์ค๋ช


๐ก 2. ์ ๊ทผ๋ฐฉ์
- n๋ช ์ ์ ์๊ฐ ์์ ๋, ๊ฐ ์ ์๋ ๋ชจ๋ ๋ค๋ฅธ ์ ์์ ๊ฒฝ๊ธฐ๋ฅผ ํ์ฌ n-1๋ฒ์ ์นํจ๋ฅผ ๊ธฐ๋กํ๋ค.
- ์ฆ, ์ ์ฒด ์นํจ ๊ฒฐ๊ณผ๋ง ์์ผ๋ฉด ๊ฐ ์ ์์ ์๋์ ์์น๋ฅผ ์ ํํ ํ๋จํด์ ์์๋ฅผ ํ์ ํ ์ ์๋ค.
์นํจ๋ฅผ ํตํด ์์๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ ๋งํ๋ฉด ๋ชจ๋ ์ ์๋ค ๊ฐ์ ์ง์ ์ ์ธ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ํ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, ์ ์ i์ ์ ์ j๊ฐ ๊ฒฝ๊ธฐ๋ฅผ ํ์ฌ ์นํจ๊ฐ ๊ฒฐ์ ๋๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ๋ค.
ํ๋ก์ด๋ ์์ (Floyd-Warshall) ์๊ณ ๋ฆฌ์ฆ
๋ชจ๋ ์ ์ต๋จ ๊ฒฝ๋ก(all-pairs shortest path)๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ทธ๋ํ์ ๋ชจ๋ ๋ ธ๋ ์์ ๋ํด ๊ฐ์ฅ ์งง์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๊ทธ๋ํ์ ๋ชจ๋ ๋ ธ๋์ ๋ํด ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๋ก ๊ฐ๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ ์ ์๋ค.
[JAVA] ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ
ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ ๊ทธ๋ํ์์, ํ ์ ์ ์์ ๋ค๋ฅธ ์ ์ ์ผ๋ก ๊ฐ๋ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ์๋ค. ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๋ฉด ๊ฐ๊ฐ์ ๋ชจ๋ ์ ์ ์์ ๋ชจ๋ ์ ์ ์ผ๋ก ๊ฐ๋ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ถ ๊ตฌํ
born2bedeveloper.tistory.com
์ด ๋ฌธ์ ํด๊ฒฐ์ ์ํด floyd[i][j] 2์ฐจ์ ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ์ ์ ๊ฐ ์นํจ๋ฅผ ๋ํ๋ด๋ ค๊ณ ํ๋ค.
์ฒ์์๋ floyd[i][j] ๋ฐฐ์ด์ ์ด๊ธฐํํ ๋๋ ๋ชจ๋ floyd[i][i]๋ฅผ 0์ผ๋ก ์ค์ ํด ์ค๋ค.

๊ทธ๋ฆฌ๊ณ ๊ฐ ์ ์ ๊ฐ์ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋๋จธ์ง ๊ฐ๋ค์ ์
๋ฐ์ดํธํ๋ค. n๋ช
์ ์ ์๊ฐ ์์ ๊ฒฝ์ฐ, floyd[i][j]๋ n * n ํฌ๊ธฐ์ 2์ฐจ์ ๋ฐฐ์ด์ด ๋๋ค. ํ์ง๋ง 0๋ฒ์ธ๋ฑ์ค๋ ์์ธ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ค์ ์ฝ๋์์๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ (n+1)*(n+1)๋ก ์ ์ธํ๋ค
floyd[i][j]:
- floyd[i][j] = 1: i ์ ์๊ฐ j ์ ์๋ฅผ ์ด๊ธด ๊ฒฝ์ฐ
- floyd[i][j] = -1: i ์ ์๊ฐ j ์ ์์๊ฒ ์ง ๊ฒฝ์ฐ
- floyd[i][j] = 0 : i ์ ์์ j ์ ์๊ฐ ๋์ผํ ์ ์์ธ ๊ฒฝ์ฐ (์ฆ, ์๊ธฐ ์์ ๊ณผ์ ๊ฒฝ๊ธฐ๋ ์นํจ๋ฅผ ๋๋์ง ์๊ธฐ ๋๋ฌธ์ 0)
์ด ๋ ๋ฐ๋ ์ผ์ด์ค๋ ์ ์ ์์ผ๋ฏ๋ก ํด๋น ๊ฐ๋ ๋ฃ๋๋ค.
i ์ ์๊ฐ j ์ ์๋ฅผ ์ด๊ฒผ๋ค๋ฉด, j ์ ์๋ i์ ์์๊ฒ ์ง ๊ฒ์ด๋ฏ๋ก ์๋ ๋ ๊ฐ์ ์ฑ์๋ฃ์ ์ ์๋ค.
floyd[i][j] = 1;
floyd[j][i] = -1;

์ด์ ์์ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ํ๋ก์ด๋ ์์
๋ก ๊ฐ์ด 0์ผ๋ก ๋ ๋ถ๋ถ๋ค์ ์ฑ์๋๊ฐ๋ค.
์๋ฅผ๋ค์ด์ ์๋์ฒ๋ผ 1 > 2 ์ด๊ณ 2 > 5 ์ด๋ฉด 1 > 5 ์์ ์ ์ ์๋ค.
if(floyd[1][2] == 1 && floyd[2][5] == 1) {
floyd[1][5] = 1
floyd[5][1] = -1
}

n๋ช
์ ์ ์๊ฐ ์์ ๋ ๊ฐ ์ ์์ ์์๋ฅผ ํ์ ์ง์ผ๋ ค๋ฉด, ๊ฐ ์ ์ ๋ณ๋ก n-1์นํจ๋ฅผ ์์์ผ ํ๋ค.
5๋ช
์ด๋ฏ๋ก ๊ฐ ํ์ 0์ด ์๋ ๊ฐ์ด 4๊ฐ๊ฐ ๋ค์ด๊ฐ์ผ ํ๋ค.
๋ฐฐ์ด์ ๋ฐ๋ณต ์ํ ํ๋ฉด์ ๊ฐ ํ์์ 0์ด ์๋ ๊ฐ์ด n-1๊ฐ์ผ ๋ answer๋ฅผ ์ฆ๊ฐ์ํจ๋ค.

โญ 3. ์ ๋ต์ฝ๋
class Solution {
public int solution(int n, int[][] results) {
int answer = 0;
// n+1 ํฌ๊ธฐ์ 2์ฐจ์ ๋ฐฐ์ด ์ ์ธ (0๋ฒ ์ธ๋ฑ์ค๋ ์ฌ์ฉํ์ง ์์)
int[][] floyd = new int[n + 1][n + 1];
// ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์นํจ ์ ๋ณด ์
๋ ฅ
for (int i = 0; i < results.length; i++) {
int A = results[i][0];
int B = results[i][1];
// A๊ฐ B๋ฅผ ์ด๊ธด ๊ฒฝ์ฐ
floyd[A][B] = 1;
floyd[B][A] = -1;
}
// ํ๋ก์ด๋ ์์
์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ์ธ ์นํจ ๊ด๊ณ๋ฅผ ์ฐพ์
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
for (int k = 1; k <= n; k++) {
// i๊ฐ k๋ฅผ ์ด๊ธฐ๊ณ , k๊ฐ j๋ฅผ ์ด๊ธฐ๋ฉด i๊ฐ j๋ฅผ ์ด๊ธด๋ค๊ณ ํ์
if (floyd[i][k] == 1 && floyd[k][j] == 1) {
floyd[i][j] = 1;
floyd[j][i] = -1;
}
// i๊ฐ k์๊ฒ ์ก๊ณ , k๊ฐ j์๊ฒ ์ก์ผ๋ฉด i๊ฐ j์๊ฒ ์ง๋ค๊ณ ํ์
else if (floyd[i][k] == -1 && floyd[k][j] == -1) {
floyd[i][j] = -1;
floyd[j][i] = 1;
}
}
}
}
// ๊ฐ ์ ์์ ๋ํด, ๋ค๋ฅธ ์ ์๋ค๊ณผ์ ์นํจ ๊ฒฐ๊ณผ๊ฐ ๋ชจ๋ ํ์ ๋์๋์ง ํ์ธ
for (int i = 1; i <= n; i++) {
int cnt = 0;
for (int j = 1; j <= n; j++) {
if (floyd[i][j] != 0) {
cnt++;
}
}
// n-1๋ช
๊ณผ ์นํจ๊ฐ ํ์ ๋์๋ค๋ฉด, ์์๋ฅผ ํ์ ํ ์ ์๋ ์ ์
if (cnt == n - 1) {
answer++;
}
}
return answer; // ์์๋ฅผ ํ์ ํ ์ ์๋ ์ ์์ ์๋ฅผ ๋ฐํ
}
}
๐๐ป ์ข์์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ฝ๋
๋ค๋ค ๋น์ทํ๊ฒ ํผ ๊ฒ ๊ฐ๋ค
class Solution {
public int solution(int n, int[][] results) {
int answer = 0;
boolean[][] chk = new boolean[n + 1][n + 1];
for(int i = 0; i < results.length; i++) {
chk[results[i][0]][results[i][1]] = true;
}
for(int k = 1; k < n + 1; k++) {
for(int i = 1; i < n + 1; i++) {
for(int j = 1; j < n + 1; j++) {
if(i != j && chk[i][k] && chk[k][j]) {
chk[i][j] = true;
}
}
}
}
for(int i = 1; i < n + 1; i++) {
boolean pass = true;
for(int j = 1; j < n + 1; j++) {
if(i != j && !(chk[i][j] || chk[j][i])) {
pass = false;
break;
}
}
if(pass) {
answer++;
}
}
return answer;
}
}
๐ฆ 4. ๊ฐ์ ์ ํ ๋ฌธ์ (๊ทธ๋ํ)
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ๊ฐ์ฅ ๋จผ ๋ ธ๋ (๊ทธ๋ํ) ๋ฌธ์ ํ์ด
๐ 1. ๋ฌธ์ ์ค๋ช ๐ก 2. ์ ๊ทผ๋ฐฉ์์๋ฃ ๋ง๋ค ์๊ฐ์ ๋ฒ์จ๋ถํฐ ํผ๊ณคํ๋ค. ํํํ ๋ฌธ์ ํ์ด์ ์์, ๋ช ์์ด ๊ทธ๋ํ ๋ฌธ์ ์ธ ๋งํผ ๊ทธ๋ํ์ ๋ํด ๊ฐ๋ตํ ์ค๋ช ํ๊ณ ์ ํ๋ค.2-1. ๊ทธ๋ํ์ ๊ตฌ์กฐ๋ ธ๋: ์(cir
awesomepossum.tistory.com
'Algorithm > Programmers_Best' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ 1. ๋ฌธ์ ์ค๋ช


๐ก 2. ์ ๊ทผ๋ฐฉ์
- n๋ช ์ ์ ์๊ฐ ์์ ๋, ๊ฐ ์ ์๋ ๋ชจ๋ ๋ค๋ฅธ ์ ์์ ๊ฒฝ๊ธฐ๋ฅผ ํ์ฌ n-1๋ฒ์ ์นํจ๋ฅผ ๊ธฐ๋กํ๋ค.
- ์ฆ, ์ ์ฒด ์นํจ ๊ฒฐ๊ณผ๋ง ์์ผ๋ฉด ๊ฐ ์ ์์ ์๋์ ์์น๋ฅผ ์ ํํ ํ๋จํด์ ์์๋ฅผ ํ์ ํ ์ ์๋ค.
์นํจ๋ฅผ ํตํด ์์๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ ๋งํ๋ฉด ๋ชจ๋ ์ ์๋ค ๊ฐ์ ์ง์ ์ ์ธ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ํ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, ์ ์ i์ ์ ์ j๊ฐ ๊ฒฝ๊ธฐ๋ฅผ ํ์ฌ ์นํจ๊ฐ ๊ฒฐ์ ๋๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ๋ค.
ํ๋ก์ด๋ ์์ (Floyd-Warshall) ์๊ณ ๋ฆฌ์ฆ
๋ชจ๋ ์ ์ต๋จ ๊ฒฝ๋ก(all-pairs shortest path)๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ทธ๋ํ์ ๋ชจ๋ ๋ ธ๋ ์์ ๋ํด ๊ฐ์ฅ ์งง์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๊ทธ๋ํ์ ๋ชจ๋ ๋ ธ๋์ ๋ํด ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๋ก ๊ฐ๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ ์ ์๋ค.
[JAVA] ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ
ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ ๊ทธ๋ํ์์, ํ ์ ์ ์์ ๋ค๋ฅธ ์ ์ ์ผ๋ก ๊ฐ๋ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ์๋ค. ํ๋ก์ด๋-์์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๋ฉด ๊ฐ๊ฐ์ ๋ชจ๋ ์ ์ ์์ ๋ชจ๋ ์ ์ ์ผ๋ก ๊ฐ๋ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ์ ๋ถ ๊ตฌํ
born2bedeveloper.tistory.com
์ด ๋ฌธ์ ํด๊ฒฐ์ ์ํด floyd[i][j] 2์ฐจ์ ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ์ ์ ๊ฐ ์นํจ๋ฅผ ๋ํ๋ด๋ ค๊ณ ํ๋ค.
์ฒ์์๋ floyd[i][j] ๋ฐฐ์ด์ ์ด๊ธฐํํ ๋๋ ๋ชจ๋ floyd[i][i]๋ฅผ 0์ผ๋ก ์ค์ ํด ์ค๋ค.

๊ทธ๋ฆฌ๊ณ ๊ฐ ์ ์ ๊ฐ์ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋๋จธ์ง ๊ฐ๋ค์ ์
๋ฐ์ดํธํ๋ค. n๋ช
์ ์ ์๊ฐ ์์ ๊ฒฝ์ฐ, floyd[i][j]๋ n * n ํฌ๊ธฐ์ 2์ฐจ์ ๋ฐฐ์ด์ด ๋๋ค. ํ์ง๋ง 0๋ฒ์ธ๋ฑ์ค๋ ์์ธ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ค์ ์ฝ๋์์๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ (n+1)*(n+1)๋ก ์ ์ธํ๋ค
floyd[i][j]:
- floyd[i][j] = 1: i ์ ์๊ฐ j ์ ์๋ฅผ ์ด๊ธด ๊ฒฝ์ฐ
- floyd[i][j] = -1: i ์ ์๊ฐ j ์ ์์๊ฒ ์ง ๊ฒฝ์ฐ
- floyd[i][j] = 0 : i ์ ์์ j ์ ์๊ฐ ๋์ผํ ์ ์์ธ ๊ฒฝ์ฐ (์ฆ, ์๊ธฐ ์์ ๊ณผ์ ๊ฒฝ๊ธฐ๋ ์นํจ๋ฅผ ๋๋์ง ์๊ธฐ ๋๋ฌธ์ 0)
์ด ๋ ๋ฐ๋ ์ผ์ด์ค๋ ์ ์ ์์ผ๋ฏ๋ก ํด๋น ๊ฐ๋ ๋ฃ๋๋ค.
i ์ ์๊ฐ j ์ ์๋ฅผ ์ด๊ฒผ๋ค๋ฉด, j ์ ์๋ i์ ์์๊ฒ ์ง ๊ฒ์ด๋ฏ๋ก ์๋ ๋ ๊ฐ์ ์ฑ์๋ฃ์ ์ ์๋ค.
floyd[i][j] = 1;
floyd[j][i] = -1;

์ด์ ์์ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ํ๋ก์ด๋ ์์
๋ก ๊ฐ์ด 0์ผ๋ก ๋ ๋ถ๋ถ๋ค์ ์ฑ์๋๊ฐ๋ค.
์๋ฅผ๋ค์ด์ ์๋์ฒ๋ผ 1 > 2 ์ด๊ณ 2 > 5 ์ด๋ฉด 1 > 5 ์์ ์ ์ ์๋ค.
if(floyd[1][2] == 1 && floyd[2][5] == 1) { floyd[1][5] = 1 floyd[5][1] = -1 }

n๋ช
์ ์ ์๊ฐ ์์ ๋ ๊ฐ ์ ์์ ์์๋ฅผ ํ์ ์ง์ผ๋ ค๋ฉด, ๊ฐ ์ ์ ๋ณ๋ก n-1์นํจ๋ฅผ ์์์ผ ํ๋ค.
5๋ช
์ด๋ฏ๋ก ๊ฐ ํ์ 0์ด ์๋ ๊ฐ์ด 4๊ฐ๊ฐ ๋ค์ด๊ฐ์ผ ํ๋ค.
๋ฐฐ์ด์ ๋ฐ๋ณต ์ํ ํ๋ฉด์ ๊ฐ ํ์์ 0์ด ์๋ ๊ฐ์ด n-1๊ฐ์ผ ๋ answer๋ฅผ ์ฆ๊ฐ์ํจ๋ค.

โญ 3. ์ ๋ต์ฝ๋
class Solution { public int solution(int n, int[][] results) { int answer = 0; // n+1 ํฌ๊ธฐ์ 2์ฐจ์ ๋ฐฐ์ด ์ ์ธ (0๋ฒ ์ธ๋ฑ์ค๋ ์ฌ์ฉํ์ง ์์) int[][] floyd = new int[n + 1][n + 1]; // ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์นํจ ์ ๋ณด ์
๋ ฅ for (int i = 0; i < results.length; i++) { int A = results[i][0]; int B = results[i][1]; // A๊ฐ B๋ฅผ ์ด๊ธด ๊ฒฝ์ฐ floyd[A][B] = 1; floyd[B][A] = -1; } // ํ๋ก์ด๋ ์์
์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ์ธ ์นํจ ๊ด๊ณ๋ฅผ ์ฐพ์ for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { for (int k = 1; k <= n; k++) { // i๊ฐ k๋ฅผ ์ด๊ธฐ๊ณ , k๊ฐ j๋ฅผ ์ด๊ธฐ๋ฉด i๊ฐ j๋ฅผ ์ด๊ธด๋ค๊ณ ํ์ if (floyd[i][k] == 1 && floyd[k][j] == 1) { floyd[i][j] = 1; floyd[j][i] = -1; } // i๊ฐ k์๊ฒ ์ก๊ณ , k๊ฐ j์๊ฒ ์ก์ผ๋ฉด i๊ฐ j์๊ฒ ์ง๋ค๊ณ ํ์ else if (floyd[i][k] == -1 && floyd[k][j] == -1) { floyd[i][j] = -1; floyd[j][i] = 1; } } } } // ๊ฐ ์ ์์ ๋ํด, ๋ค๋ฅธ ์ ์๋ค๊ณผ์ ์นํจ ๊ฒฐ๊ณผ๊ฐ ๋ชจ๋ ํ์ ๋์๋์ง ํ์ธ for (int i = 1; i <= n; i++) { int cnt = 0; for (int j = 1; j <= n; j++) { if (floyd[i][j] != 0) { cnt++; } } // n-1๋ช
๊ณผ ์นํจ๊ฐ ํ์ ๋์๋ค๋ฉด, ์์๋ฅผ ํ์ ํ ์ ์๋ ์ ์ if (cnt == n - 1) { answer++; } } return answer; // ์์๋ฅผ ํ์ ํ ์ ์๋ ์ ์์ ์๋ฅผ ๋ฐํ } }
๐๐ป ์ข์์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ฝ๋
๋ค๋ค ๋น์ทํ๊ฒ ํผ ๊ฒ ๊ฐ๋ค
class Solution { public int solution(int n, int[][] results) { int answer = 0; boolean[][] chk = new boolean[n + 1][n + 1]; for(int i = 0; i < results.length; i++) { chk[results[i][0]][results[i][1]] = true; } for(int k = 1; k < n + 1; k++) { for(int i = 1; i < n + 1; i++) { for(int j = 1; j < n + 1; j++) { if(i != j && chk[i][k] && chk[k][j]) { chk[i][j] = true; } } } } for(int i = 1; i < n + 1; i++) { boolean pass = true; for(int j = 1; j < n + 1; j++) { if(i != j && !(chk[i][j] || chk[j][i])) { pass = false; break; } } if(pass) { answer++; } } return answer; } }
๐ฆ 4. ๊ฐ์ ์ ํ ๋ฌธ์ (๊ทธ๋ํ)
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ๊ฐ์ฅ ๋จผ ๋ ธ๋ (๊ทธ๋ํ) ๋ฌธ์ ํ์ด
๐ 1. ๋ฌธ์ ์ค๋ช ๐ก 2. ์ ๊ทผ๋ฐฉ์์๋ฃ ๋ง๋ค ์๊ฐ์ ๋ฒ์จ๋ถํฐ ํผ๊ณคํ๋ค. ํํํ ๋ฌธ์ ํ์ด์ ์์, ๋ช ์์ด ๊ทธ๋ํ ๋ฌธ์ ์ธ ๋งํผ ๊ทธ๋ํ์ ๋ํด ๊ฐ๋ตํ ์ค๋ช ํ๊ณ ์ ํ๋ค.2-1. ๊ทธ๋ํ์ ๊ตฌ์กฐ๋ ธ๋: ์(cir
awesomepossum.tistory.com