๐Ÿ“ Coding Test Study/Algorithm Problem

[BAEKJOON][C++][์‹œ๋ฎฌ๋ ˆ์ด์…˜] 16236๋ฒˆ ์•„๊ธฐ์ƒ์–ด

ibelieveinme 2021. 9. 25. 20:12
728x90

๋ฌธ์ œ

 

16236๋ฒˆ: ์•„๊ธฐ ์ƒ์–ด

N×N ํฌ๊ธฐ์˜ ๊ณต๊ฐ„์— ๋ฌผ๊ณ ๊ธฐ M๋งˆ๋ฆฌ์™€ ์•„๊ธฐ ์ƒ์–ด 1๋งˆ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ๊ณต๊ฐ„์€ 1×1 ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋‹ค. ํ•œ ์นธ์—๋Š” ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ์ตœ๋Œ€ 1๋งˆ๋ฆฌ ์กด์žฌํ•œ๋‹ค. ์•„๊ธฐ ์ƒ์–ด์™€ ๋ฌผ๊ณ ๊ธฐ๋Š” ๋ชจ๋‘ ํฌ๊ธฐ๋ฅผ ๊ฐ€

www.acmicpc.net

 

ํ’€์ด

์ด ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์ค‘์š”ํ•œ ์ ์€, ๋ฌผ๊ณ ๊ธฐ๋ฅผ ํ•œ๋งˆ๋ฆฌ ๋จน์„ ๋•Œ ๋งˆ๋‹ค ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๊ณ ๊ธฐ ํฌ๊ธฐ๊ฐ€ ๋Š˜์—ˆ์„ ๋•Œ ๋งˆ๋‹ค ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์žฌํƒ์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๋ฌผ๊ณ ๊ธฐ๋ฅผ ํ•œ ๋งˆ๋ฆฌ ๋จน์—ˆ์œผ๋ฉด, ๊ทธ์ž๋ฆฌ๋กœ ์ด๋™ํ•ด์„œ ๋‹ค์‹œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด && ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” && ๊ฐ€์žฅ ์•ˆ์ชฝ์— ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋‹ค์‹œ ์ฐพ์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๊ณ ๊ธฐ ํฌ๊ธฐ๊ฐ€ ๋Š˜์—ˆ๋‹ค๋ฉด, ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋ฌผ๊ณ ๊ธฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ถ€๋ถ„์€, ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ์ตœ์šฐ์„ ์ด๋ฏ€๋กœ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐ์— ์“ฐ์ด๋Š” BFS ๋ฅผ ์ด์šฉํ–ˆ๋‹ค.

 

  • ๋ณ€์ˆ˜ ์„ค๋ช…

1. ํƒ์ƒ‰ํ•  ๋•Œ๋งˆ๋‹ค ์ƒ์–ด๊ฐ€ ๊ฐ–๊ณ  ์žˆ์–ด์•ผํ•  ๋ณ€์ˆ˜(์ขŒํ‘œ, ์‚ฌ์ด์ฆˆ, ๋จน์€ ๋ฌผ๊ณ ๊ธฐ์ˆ˜, ์‹œ๊ฐ„)๊ฐ€ ๋งŽ์•„์„œ ๊ตฌ์กฐ์ฒด๋กœ ์ƒ์–ด๋ณ€์ˆ˜๋ฅผ ํ‘œํ˜„ํ–ˆ๋‹ค. ๋ฌผ๊ณ ๊ธฐ๋„ ์ขŒํ‘œ, ๊ฑฐ๋ฆฌ ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด์•ผ ํ•ด์„œ ๊ตฌ์กฐ์ฒด๋กœ ํ‘œํ˜„ํ–ˆ๋‹ค. 

typedef struct {
	int x;
	int y;
	int size;
	int eating_num;
	int time;
}Shark;

typedef struct {
	int x;
	int y;
	int distance;
}Fish;

 

2. ์ฐพ์€ ๋ฌผ๊ณ ๊ธฐ๋“ค์˜ ๋–จ์–ด์ง„ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ ๋ฌธ์ œ์˜ ์กฐ๊ฑด๋Œ€๋กœ ์ •๋ ฌํ•ด์•ผํ•˜๋ฏ€๋กœ ๋ฌผ๊ณ ๊ธฐ๋“ค์„ ์ €์žฅํ•ด ๋†“์„ ๋ฒกํ„ฐ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

vector<Fish> fish_vector;

๊ทธ๋ฆฌ๊ณ  ์ •๋ ฌ์€ sortํ•จ์ˆ˜๋ฅผ customํ•ด์„œ ๊ตฌํ–ˆ๋‹ค.

//sort(fish_vector.begin(), fish_vector.end(), sortFish);


bool sortFish(Fish fish1, Fish fish2) {
	//1. distance๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ.
	if (fish1.distance < fish2.distance) {
		return true;
	}
	else if (fish1.distance > fish2.distance) {
		return false;
	}
	else {//๊ฐ™์„ ๋•Œ
		//2. ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๊ฒƒ. i๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ.
		if (fish1.x < fish2.x) {
			return true;
		}
		else if (fish1.x > fish2.x) {
			return false;
		}
		else {//๊ฐ™์„ ๋•Œ
			//3. ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ๊ฒƒ. j๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ.
			if (fish1.y < fish2.y) {
				return true;
			}
			else if (fish1.y > fish2.y) {
				return false;
			}
			else return false;
		}
	}
}

 

  • ๋กœ์ง์„ค๋ช…

1. ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ Input์„ ๋ฐ›๋Š”๋‹ค. ์ด ๋•Œ, ์ƒ์–ด์˜ ์œ„์น˜์—์„œ BFS๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ƒ์–ด์˜ ์œ„์น˜๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ, ์ƒ์–ด ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ํ•ด๋‹น ์œ„์น˜๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ค€๋‹ค.

2. Input์„ ๋ฐ›์„ ๋•Œ, ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ ์ˆ˜๋„ ๊ฐฑ์‹ ํ•ด์ค˜์„œ ๋ฌผ๊ณ ๊ธฐ์ˆ˜๊ฐ€ 1๊ฐœ ์ด์ƒ์ด๋ผ๋ฉด BFS๋กœ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๊ณ , ์•„๋‹๊ฒฝ์šฐ 0์„ ์ถœ๋ ฅํ•˜๋„๋ก ํ•ด์คฌ๋‹ค.

3. ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด, BFS๋กœ ๋ฌผ๊ณ ๊ธฐ๋“ค์„ ์ฐพ๋Š”๋‹ค.

int direction[4][2] = { {-1,0},{1,0},{0,-1},{0,1} }; //์ƒํ•˜์ขŒ์šฐ ๋ฐฉํ–ฅํ‚ค
queue<pair<pair<int, int>,int>> move_q; //์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์นธ๋“ค์„ ์ €์žฅํ•  ๋ณ€์ˆ˜(์นธ์˜ x์ขŒํ‘œ, y์ขŒํ‘œ, ์ด๋™ ๊ฑฐ๋ฆฌ)
bool visited[MAX_SIZE][MAX_SIZE]; //๋ฐฉ๋ฌธ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•  ๋ณ€์ˆ˜

  3-1 ์ƒํ•˜์ขŒ์šฐ ๋ฐฉํ–ฅํ‚ค๋กœ ์ด๋™ํ•˜๋‹ค๊ฐ€ ํ•ด๋‹น ์ž๋ฆฌ๊ฐ€ 0์ด ์•„๋‹ˆ๊ณ , ์ž๊ธฐ๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋ฅผ ๋งŒ๋‚ฌ์„ ๋•Œ, ํ•ด๋‹น ์นธ์˜ ์ •๋ณด๋ฅผ ๋ฌผ๊ณ ๊ธฐ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ  ๋ฒกํ„ฐ์— ์ €์žฅํ•ด์ค€๋‹ค. ์ด ๋•Œ, ์ด๋™๊ฑฐ๋ฆฌ๊ฐ€ 1์”ฉ ๋Š˜์–ด๋‚˜๋‹ˆ๊น dist(๊ฑฐ๋ฆฌ๋ณ€์ˆ˜)์— 1 ๋Š˜๋ฆฐ ๊ฐ’์„ ์ €์žฅํ•ด์ค€๋‹ค.

Fish fish = {next_x, next_y, dist+1};
fish_vector.push_back(fish);

4. ํƒ์ƒ‰์ด ๋ชจ๋‘ ๋๋‚ฌ๋‹ค๋ฉด, ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์ •๋ ฌํ•ด์„œ ๋งจ ์•ž์— ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋จน์œผ๋Ÿฌ ๊ฐ„๋‹ค.

5. ๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋จน์„ ๋•Œ, ์ƒ์–ด์˜ ์ •๋ณด๋ฅผ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค.

shark.x = fish_vector.front().x;
shark.y = fish_vector.front().y;
shark.eating_num += 1;
shark.time += fish_vector.front().distance;
map[shark.x][shark.y] = 9;

   5-1 ๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋จน์—ˆ๋Š”๋ฐ ์ƒ์–ด๊ฐ€ ๋จน์€ ๋ฌผ๊ณ ๊ธฐ ์ˆ˜์™€ ์ž๊ธฐ ๋ชธ ํฌ๊ธฐ๊ฐ€ ๊ฐ™์•„์กŒ๋‹ค๋ฉด, ๋จน์€ ๊ฐœ์ˆ˜๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๊ณ  ๋‹ค์‹œ BFS๋กœ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์ฐพ์œผ๋Ÿฌ ๊ฐ„๋‹ค.

if (shark.eating_num == shark.size) { 
	shark.size += 1;
	shark.eating_num = 0;
	SearchBFS();//๋ฌผ๊ณ ๊ธฐ ํฌ๊ธฐ๊ฐ€ ๋Š˜๋ฉด ๋ฌผ๊ณ ๊ธฐ ๋‹ค์‹œ ์ฐพ์•„์•ผ ํ•จ
}

 

 

์ „์ฒด ์ฝ”๋“œ

#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;

typedef struct {
	int x;
	int y;
	int size;
	int eating_num;
	int time;
}Shark;

typedef struct {
	int x;
	int y;
	int distance;
}Fish;

const int MAX_SIZE = 21;
int direction[4][2] = { {-1,0},{1,0},{0,-1},{0,1} };//์ƒํ•˜์ขŒ์šฐ ๋ฐฉํ–ฅํ‚ค
int map_size;
int map[MAX_SIZE][MAX_SIZE];

Shark shark;
vector<Fish> fish_vector;//๋จน์„ ์ˆ˜ ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ๋“ค์„ ์ €์žฅํ•  ๋ฐฐ์—ด(์ •๋ ฌ์„ ์œ„ํ•ด ๋ฒกํ„ฐ์— ์ €์žฅ)

int SearchBFS();//๋ฌผ๊ณ ๊ธฐ ํƒ์ƒ‰
void eatFish();//๋ฌผ๊ณ ๊ธฐ ๋จน๊ธฐ

//๋ฌผ๊ณ ๊ธฐ ์ •๋ ฌ
bool sortFish(Fish fish1, Fish fish2) {
	//1. distance๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ.
	if (fish1.distance < fish2.distance) {
		return true;
	}
	else if (fish1.distance > fish2.distance) {
		return false;
	}
	else {//๊ฐ™์„ ๋•Œ
		//2. ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๊ฒƒ. i๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ.
		if (fish1.x < fish2.x) {
			return true;
		}
		else if (fish1.x > fish2.x) {
			return false;
		}
		else {//๊ฐ™์„ ๋•Œ
			//3. ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ๊ฒƒ. j๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ.
			if (fish1.y < fish2.y) {
				return true;
			}
			else if (fish1.y > fish2.y) {
				return false;
			}
			else return false;
		}
	}
}

int main() {
	int fish_num = 0;
	cin >> map_size;
	for (int i = 0; i < map_size; i++) {
		for (int j = 0; j < map_size; j++) {
			cin >> map[i][j];
			if (map[i][j] == 9) {//9๊ฐ€ ์ƒ์–ด ์œ„์น˜. ์ƒ์–ด์ดˆ๊ธฐํ™”.
				shark.x = i;
				shark.y = j;
				shark.size = 2;
				shark.eating_num = 0;
				shark.time = 0;
			}
			//์ƒ์–ด๊ฐ€ ๋จน์„ ์ˆ˜ ์žˆ๋Š”(์ž๊ธฐ๋ณด๋‹ค ์ž‘์€ ๋ฌผ๊ณ ๊ธฐ) ๋ฌผ๊ณ ๊ธฐ ์ˆ˜ ๊ฐฑ์‹ 
			if (map[i][j] > 0 && map[i][j] < 2) {
				fish_num++;
			}
		}
	}
	while (fish_num > 0) {//ํ•˜๋‚˜๋ผ๋„ ์žˆ๋‹ค๋ฉด ๋จน์œผ๋Ÿฌ ๊ฐ€๊ธฐ
		fish_num = SearchBFS();
	} cout << shark.time;

	return 0;
}

//BFS๋กœ ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฌผ๊ณ ๊ธฐ ์ฐพ๊ธฐ(์ž์‹ ์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์€ ๋ฌผ๊ณ ๊ธฐ)
int SearchBFS() {
	queue<pair<pair<int,int>,int>> move_q;//BFS ์ด๋™์„ ์œ„ํ•œ ํ(x,y, distance)
	bool visited[MAX_SIZE][MAX_SIZE] = { false, };//๋ฐฉ๋ฌธ์ฒดํฌ ๋ฐฐ์—ด
	fish_vector.clear();//๋ฌผ๊ณ ๊ธฐ ๋‹ค์‹œ ๋‹ด์•„์•ผํ•˜๋‹ˆ๊น clear

	move_q.push(make_pair(make_pair(shark.x, shark.y),0));//ํ˜„์žฌ ์œ„์น˜๋ถ€ํ„ฐ ํƒ์ƒ‰ ์‹œ์ž‘
	map[shark.x][shark.y] = 0;//ํ˜„์žฌ ์œ„์น˜์—์„œ ์ด๋™ํ• ๊ฑฐ๋‹ˆ๊นŒ 0์œผ๋กœ ํ‘œ์‹œ
	visited[shark.x][shark.y] = true;//ํ˜„์žฌ ์œ„์น˜ ๋ฐฉ๋ฌธ์ฒดํฌ

	while(!move_q.empty()){//ํƒ์ƒ‰ํ•  ์œ„์น˜๊ฐ€ ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
		int cur_x = move_q.front().first.first;
		int cur_y = move_q.front().first.second;
		int dist = move_q.front().second;
		move_q.pop();

		for (int i = 0; i < 4; i++) {//์ƒํ•˜์ขŒ์šฐ ํƒ์ƒ‰
			int next_x = cur_x + direction[i][0];
			int next_y = cur_y + direction[i][1];
			if (next_x >= 0 && next_x < map_size && next_y >= 0 && next_y < map_size ) {
				//์ƒ์–ด๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ: ์ž์‹ ์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์€ ์นธ & ๋ฐฉ๋ฌธํ•œ ์  ์—†๋Š” ์นธ
				if (map[next_x][next_y] <= shark.size && !visited[next_x][next_y]) {
					visited[next_x][next_y] = true;
					move_q.push(make_pair(make_pair(next_x, next_y), dist+1));
					//๊ทธ ์ž๋ฆฌ๊ฐ€ 0์ด ์•„๋‹ˆ๊ณ (๋นˆ์ž๋ฆฌX) ์ž๊ธฐ๋ณด๋‹ค ์ž‘์€ ๋ฌผ๊ณ ๊ธฐ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋ฌผ๊ณ ๊ธฐ ๋ฒกํ„ฐ์— ๋„ฃ์–ด์ฃผ๊ธฐ. 
					if (map[next_x][next_y] != 0 && map[next_x][next_y] < shark.size) {
						Fish fish = {next_x, next_y, dist+1};
						fish_vector.push_back(fish);
					}
				}
			}
		}
	}
	//ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์„ ๋‹ค ๋ดค๋‹ค๋ฉด, ๋ฌผ๊ณ ๊ธฐ ์ •๋ ฌํ•ด์„œ ๋จน์œผ๋Ÿฌ ๊ฐ€๊ธฐ.
	if (fish_vector.size() >= 1) {
		//๋ฌผ๊ณ ๊ธฐ ์ •๋ ฌ ํ›„ ๋จน๊ธฐ
		sort(fish_vector.begin(), fish_vector.end(), sortFish);
		eatFish();
		return fish_vector.size() - 1;
	}
	return 0;
}

//๋งจ ์ฒซ๋ฒˆ์งธ ๋ฌผ๊ณ ๊ธฐ ๋จน๊ธฐ
void eatFish() {
	shark.x = fish_vector.front().x;
	shark.y = fish_vector.front().y;
	shark.eating_num += 1;
	shark.time += fish_vector.front().distance;
	map[shark.x][shark.y] = 9;

	if (shark.eating_num == shark.size) { 
		shark.size += 1;
		shark.eating_num = 0;
		SearchBFS();//๋ฌผ๊ณ ๊ธฐ ํฌ๊ธฐ๊ฐ€ ๋Š˜๋ฉด ๋ฌผ๊ณ ๊ธฐ ๋‹ค์‹œ ์ฐพ์•„์•ผ ํ•จ
	}
}

 

cf) ์• ๋จน์€ ๋ถ€๋ถ„...

vector<Fish> fish_vector; ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๋ฌผ๊ณ ๊ธฐ๋“ค์„ ์ €์žฅํ•œ ๋ฒกํ„ฐ๋ฅผ SearchBFS() ํ•จ์ˆ˜ ์•ˆ์— ์ ์—ˆ๋‹ค๊ฐ€ ๋ฌผ๊ณ ๊ธฐ ํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด์„œ SearchBFS() ๋ฅผ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•œ ํ›„ return ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ์ด์ „์— ๋“ค๊ณ  ์žˆ๋˜ fish_vector๊ฐ’์„ ๋ฆฌํ„ดํ•ด์„œ main()์˜ ์žฌํƒ์ƒ‰๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

14๊นŒ์ง€ ๊ฐ€์•ผํ•˜๋Š”๋ฐ, 10์—์„œ fish_vector.size()-1 = 0์„ main ์œผ๋กœ ๋ฆฌํ„ดํ•จ... ์ด์ „์— ๊ตฌํ–ˆ๋˜ fish_vector.size(): 1 ๋•Œ๋ฅผ ๋ฆฌํ„ดํ•ด์„œ...

 

vector<Fish> fish_vector; ๋ฅผ ์ „์—ญ๋ณ€์ˆ˜๋กœ ๋นผ์„œ main()์˜ ์žฌํƒ์ƒ‰๋ฌธ์—์„œ fish_vector์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์ฒดํฌํ•ด์คŒ์œผ๋กœ์จ ์ด์ „ ๊ฐ’์„ return ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋”ฐ.

 

๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๊ฒ ์ง€๋งŒ.... 3์‹œ๊ฐ„ ๋™๋™๊ฑฐ๋ฆฐ ์ง€๊ธˆ ๋‚ด๋จธ๋ฆฌ๋Š” ์ด๊ฒŒ ํ•œ๊ณ„์ธ๋“ฏ...

728x90