Algorithm/๋ฌธ์ œํ’€์ด

[๋ฐฑ์ค€] 16928๋ฒˆ - ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„ (C++)

2023. 9. 7. 22:43

 

16928๋ฒˆ: ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„

์ฒซ์งธ ์ค„์— ๊ฒŒ์ž„ํŒ์— ์žˆ๋Š” ์‚ฌ๋‹ค๋ฆฌ์˜ ์ˆ˜ N(1 โ‰ค N โ‰ค 15)๊ณผ ๋ฑ€์˜ ์ˆ˜ M(1 โ‰ค M โ‰ค 15)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์‚ฌ๋‹ค๋ฆฌ์˜ ์ •๋ณด๋ฅผ ์˜๋ฏธํ•˜๋Š” x, y (x < y)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. x๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๋ฉด, y๋ฒˆ ์นธ์œผ

www.acmicpc.net

๋ฌธ์ œ

๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„์„ ์ฆ๊ฒจ ํ•˜๋Š” ํ๋ธŒ๋Ÿฌ๋ฒ„๋Š” ์–ด๋А ๋‚  ๊ถ๊ธˆํ•œ ์ ์ด ์ƒ๊ฒผ๋‹ค.

์ฃผ์‚ฌ์œ„๋ฅผ ์กฐ์ž‘ํ•ด ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ˆ˜๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์ตœ์†Œ ๋ช‡ ๋ฒˆ๋งŒ์— ๋„์ฐฉ์ ์— ๋„์ฐฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

๊ฒŒ์ž„์€ ์ •์œก๋ฉด์ฒด ์ฃผ์‚ฌ์œ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ฃผ์‚ฌ์œ„์˜ ๊ฐ ๋ฉด์—๋Š” 1๋ถ€ํ„ฐ 6๊นŒ์ง€ ์ˆ˜๊ฐ€ ํ•˜๋‚˜์”ฉ ์ ํ˜€์žˆ๋‹ค. ๊ฒŒ์ž„์€ ํฌ๊ธฐ๊ฐ€ 10ร—10์ด๊ณ , ์ด 100๊ฐœ์˜ ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋Š” ๋ณด๋“œํŒ์—์„œ ์ง„ํ–‰๋œ๋‹ค. ๋ณด๋“œํŒ์—๋Š” 1๋ถ€ํ„ฐ 100๊นŒ์ง€ ์ˆ˜๊ฐ€ ํ•˜๋‚˜์”ฉ ์ˆœ์„œ๋Œ€๋กœ ์ ํ˜€์ ธ ์žˆ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด๋Š” ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ ค ๋‚˜์˜จ ์ˆ˜๋งŒํผ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”Œ๋ ˆ์ด์–ด๊ฐ€ i๋ฒˆ ์นธ์— ์žˆ๊ณ , ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ ค ๋‚˜์˜จ ์ˆ˜๊ฐ€ 4๋ผ๋ฉด, i+4๋ฒˆ ์นธ์œผ๋กœ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ฆฐ ๊ฒฐ๊ณผ๊ฐ€ 100๋ฒˆ ์นธ์„ ๋„˜์–ด๊ฐ„๋‹ค๋ฉด ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค. ๋„์ฐฉํ•œ ์นธ์ด ์‚ฌ๋‹ค๋ฆฌ๋ฉด, ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ํƒ€๊ณ  ์œ„๋กœ ์˜ฌ๋ผ๊ฐ„๋‹ค. ๋ฑ€์ด ์žˆ๋Š” ์นธ์— ๋„์ฐฉํ•˜๋ฉด, ๋ฑ€์„ ๋”ฐ๋ผ์„œ ๋‚ด๋ ค๊ฐ€๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ์ด์šฉํ•ด ์ด๋™ํ•œ ์นธ์˜ ๋ฒˆํ˜ธ๋Š” ์›๋ž˜ ์žˆ๋˜ ์นธ์˜ ๋ฒˆํ˜ธ๋ณด๋‹ค ํฌ๊ณ , ๋ฑ€์„ ์ด์šฉํ•ด ์ด๋™ํ•œ ์นธ์˜ ๋ฒˆํ˜ธ๋Š” ์›๋ž˜ ์žˆ๋˜ ์นธ์˜ ๋ฒˆํ˜ธ๋ณด๋‹ค ์ž‘์•„์ง„๋‹ค.

๊ฒŒ์ž„์˜ ๋ชฉํ‘œ๋Š” 1๋ฒˆ ์นธ์—์„œ ์‹œ์ž‘ํ•ด์„œ 100๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ฒŒ์ž„ํŒ์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, 100๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ ค์•ผ ํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•ด๋ณด์ž.

 

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๊ฒŒ์ž„ํŒ์— ์žˆ๋Š” ์‚ฌ๋‹ค๋ฆฌ์˜ ์ˆ˜ N(1 โ‰ค N โ‰ค 15)๊ณผ ๋ฑ€์˜ ์ˆ˜ M(1 โ‰ค M โ‰ค 15)์ด ์ฃผ์–ด์ง„๋‹ค.

๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์‚ฌ๋‹ค๋ฆฌ์˜ ์ •๋ณด๋ฅผ ์˜๋ฏธํ•˜๋Š” x, y (x < y)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. x๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๋ฉด, y๋ฒˆ ์นธ์œผ๋กœ ์ด๋™ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

๋‹ค์Œ M๊ฐœ์˜ ์ค„์—๋Š” ๋ฑ€์˜ ์ •๋ณด๋ฅผ ์˜๋ฏธํ•˜๋Š” u, v (u > v)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. u๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๋ฉด, v๋ฒˆ ์นธ์œผ๋กœ ์ด๋™ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

1๋ฒˆ ์นธ๊ณผ 100๋ฒˆ ์นธ์€ ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ์˜ ์‹œ์ž‘ ๋˜๋Š” ๋์ด ์•„๋‹ˆ๋‹ค. ๋ชจ๋“  ์นธ์€ ์ตœ๋Œ€ ํ•˜๋‚˜์˜ ์‚ฌ๋‹ค๋ฆฌ ๋˜๋Š” ๋ฑ€์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๋™์‹œ์— ๋‘ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค. ํ•ญ์ƒ 100๋ฒˆ ์นธ์— ๋„์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž…๋ ฅ๋งŒ ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

100๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์‚ฌ์œ„๋ฅผ ์ตœ์†Œ ๋ช‡ ๋ฒˆ ๊ตด๋ ค์•ผ ํ•˜๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

ํ’€์ด๊ณผ์ •

ํ•ด๋‹น๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์‚ฌํ•ญ์€ "๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ๊ฒŒ์ž„์—์„œ100๊นŒ์ง€ ๋„์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•ด๋ผ" ๋ผ๋Š” ๋ฌธ์ œ ์˜€์—ˆ๋‹ค.

๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง€๋Š” ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ์˜ ์ˆ˜๊ฐ€ ํ•ฉ์ณ๋ดค์ž ์ตœ๋Œ€ 30๊ฐœ์ด๊ธฐ๋•Œ๋ฌธ์— ์‹œ๊ฐ„ ๊ฑฑ์ •์ด ํฌ๊ฒŒ ์—†์–ด์„œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค ๋Œ๋ฉด ๋˜์ง€์•Š์„๊นŒ ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ํ•ด๋‹น ๋ฐฉ๋ฒ•์œผ๋กœ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

 

ํ˜„์žฌ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ฃผ์‚ฌ์œ„๋ฅผ ํ•œ๋ฒˆ ๋” ๊ตด๋ ค์„œ ๋„์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 

+1, +2, +3, +4, +5, +6 ์ด๊ณ  ๊ทธ์ค‘์—์„œ ๋งŒ์•ฝ์— ์ด๋™ํ•  ์œ„์น˜์— ๋ฑ€ํ˜น์€ ์‚ฌ๋‹ค๋ฆฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฌด์กฐ๊ฑด ์ด์šฉ์„ ํ•ด์•ผํ•˜๋Š” ๋•Œ๋ฌธ์— ๊ทธ ๊ฒฝ์šฐ๋ฅผ ํฌํ•จํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ณ„์‚ฐ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰์„ ํ•˜์˜€๊ณ ,

๋ฌธ์ œ์—์„œ "100๊นŒ์ง€ ๋„์ฐฉํ• ๋•Œ ์ฃผ์‚ฌ์œ„๋ฅผ ์ตœ์†Œ๊ฐ’์œผ๋กœ ๊ตฌํ•ด๋ผ"๋ผ๊ณ  ํ•ด์„œ check๋ผ๋Š” ๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์ค˜์„œ n์ด๋ผ๋Š” ์œ„์น˜์— ๋„์ฐฉํ–ˆ์„๋•Œ ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ฆฐ ํšŸ์ˆ˜๊ฐ€ ์ตœ์†Œ๊ฐ’์ธ ๊ฒฝ์šฐ์—๋งŒ ๋” ์ง„ํ–‰์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์กฐ๊ฑด์‹์„ ๋งŒ๋“ค์–ด๋‘์—ˆ๋‹ค.

์œ„์™€ ๊ฐ™์€ ์กฐ๊ฑด์‹์„ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๋‹ค๋Œ๋ ธ์„๋•Œ ๊ฐ€์žฅ๋จผ์ € 100์— ๋„์ฐฉํ•œ ๊ฒฝ์šฐ์˜ ์ฃผ์‚ฌ์œ„ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ’€์ด๋ฅผ ๊ตฌ์„ฑํ•˜์˜€๋‹ค.

 

code

#include <iostream>
#include <vector>
#include <queue>

std::vector<int> vec[101];
int	check[101];

void		bfs()
{
	std::queue <std::pair<int, int> > que;
	std::pair<int, int> pos;

	std::fill_n(check, 101, 101);
	que.push(std::make_pair(1, 0));
	while (!que.empty())
	{
		pos = que.front();
		if (pos.first == 100) break;
		que.pop();
		for(int i = pos.first; i <= pos.first + 6; i++) {
			if (100 < i) break;
			if (!vec[i].empty()) {
				if (pos.second + 1 < check[i]) {
					que.push(std::make_pair(vec[i].front(), pos.second + 1));
					check[i] = pos.second + 1;
				}
			}
			else if (pos.first < i) {
				if (pos.second + 1 < check[i]) {
					que.push(std::make_pair(i, pos.second + 1));
					check[i] = pos.second + 1;
				}
			}
		}
	}
	std::cout << pos.second << "\n";
}

int		main(void)
{
	int n, m, u, v;

	std::cin >> n >> m;
	for (int i = 0; i < n + m; i++) {
		std::cin >> u >> v;
		vec[u].push_back(v);
	}
	bfs();

	return (0);
}

 

ํ›„๊ธฐ

๋กœ์ง์ž์ฒด๊ฐ€ ์–ด๋ ต์ง€๋Š” ์•Š์•˜๋Š”๋ฐ

check ๋ฐฐ์—ด์„ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๋Š” ๊ณผ์ •์—์„œ 101๊นŒ์ง€ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์•ผํ•˜๋Š”๋ฐ 100๊นŒ์ง€๋งŒ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์คฌ์–ด์„œ์ด์ƒํ•œ ๋ฐ˜๋ก€๊ฐ€ ์ƒ๊ฒจ ๋ฒ„๋ ค์„œ

๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ ค๋ฒ„๋ ธ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Algorithm > ๋ฌธ์ œํ’€์ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 2805๋ฒˆ - ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ (C++)  (1) 2023.09.09
[๋ฐฑ์ค€] 17219๋ฒˆ - ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ (C++)  (0) 2023.09.08
[๋ฐฑ์ค€] 9205๋ฒˆ - ๋งฅ์ฃผ ๋งˆ์‹œ๋ฉด์„œ ๊ฑธ์–ด๊ฐ€๊ธฐ (C++)  (0) 2023.09.06
[๋ฐฑ์ค€] 21736๋ฒˆ - ํ—Œ๋‚ด๊ธฐ๋Š” ์นœ๊ตฌ๊ฐ€ ํ•„์š”ํ•ด (C++)  (0) 2023.09.05
[๋ฐฑ์ค€] 15904๋ฒˆ - UCPC๋Š” ๋ฌด์—‡์˜ ์•ฝ์ž์ผ๊นŒ? (C++)  (0) 2023.09.05
  1. ๋ฌธ์ œ
  2. ์ž…๋ ฅ
  3. ์ถœ๋ ฅ
  4. ํ’€์ด๊ณผ์ •
  5. code
  6. ํ›„๊ธฐ
moaoh
moaoh
๋‚˜์˜ ์„ฑ์žฅ ์ผ๊ธฐ.
moaoh
๐Ÿถ ๐Ÿพ
moaoh
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • Github
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • Algorithm
      • ๊ฐœ๋…์ •๋ฆฌ
      • ๋ฌธ์ œํ’€์ด
    • 42seoul
      • projects
    • CS
    • programming language
      • C++
      • Javascript
      • Go
      • Python
      • Front-end
      • Java
    • Java Spring
    • git
    • ์ผ์ƒ
      • ์ฑ… ์ฝ๊ธฐ

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ
moaoh
[๋ฐฑ์ค€] 16928๋ฒˆ - ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„ (C++)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.