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

[๋ฐฑ์ค€] 1446๋ฒˆ - ์ง€๋ฆ„๊ธธ (C++)

2023. 8. 30. 23:21

 

1446๋ฒˆ: ์ง€๋ฆ„๊ธธ

์ฒซ์งธ ์ค„์— ์ง€๋ฆ„๊ธธ์˜ ๊ฐœ์ˆ˜ N๊ณผ ๊ณ ์†๋„๋กœ์˜ ๊ธธ์ด D๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. N์€ 12 ์ดํ•˜์ธ ์–‘์˜ ์ •์ˆ˜์ด๊ณ , D๋Š” 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์— ์ง€๋ฆ„๊ธธ์˜ ์‹œ์ž‘ ์œ„์น˜, ๋„์ฐฉ ์œ„์น˜, ์ง€๋ฆ„๊ธธ์˜ ๊ธธ์ด

www.acmicpc.net

 

๋ฌธ์ œ

๋งค์ผ ์•„์นจ, ์„ธ์ค€์ด๋Š” ํ•™๊ต์— ๊ฐ€๊ธฐ ์œ„ํ•ด์„œ ์ฐจ๋ฅผ ํƒ€๊ณ  Dํ‚ฌ๋กœ๋ฏธํ„ฐ ๊ธธ์ด์˜ ๊ณ ์†๋„๋กœ๋ฅผ ์ง€๋‚œ๋‹ค. ์ด ๊ณ ์†๋„๋กœ๋Š” ์‹ฌ๊ฐํ•˜๊ฒŒ ์ปค๋ธŒ๊ฐ€ ๋งŽ์•„์„œ ์ •๋ง ์šด์ „ํ•˜๊ธฐ๋„ ํž˜๋“ค๋‹ค. ์–ด๋А ๋‚ , ์„ธ์ค€์ด๋Š” ์ด ๊ณ ์†๋„๋กœ์— ์ง€๋ฆ„๊ธธ์ด ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ชจ๋“  ์ง€๋ฆ„๊ธธ์€ ์ผ๋ฐฉํ†ตํ–‰์ด๊ณ , ๊ณ ์†๋„๋กœ๋ฅผ ์—ญ์ฃผํ–‰ํ•  ์ˆ˜๋Š” ์—†๋‹ค.

์„ธ์ค€์ด๊ฐ€ ์šด์ „ํ•ด์•ผ ํ•˜๋Š” ๊ฑฐ๋ฆฌ์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ง€๋ฆ„๊ธธ์˜ ๊ฐœ์ˆ˜ N๊ณผ ๊ณ ์†๋„๋กœ์˜ ๊ธธ์ด D๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. N์€ 12 ์ดํ•˜์ธ ์–‘์˜ ์ •์ˆ˜์ด๊ณ , D๋Š” 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์— ์ง€๋ฆ„๊ธธ์˜ ์‹œ์ž‘ ์œ„์น˜, ๋„์ฐฉ ์œ„์น˜, ์ง€๋ฆ„๊ธธ์˜ ๊ธธ์ด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋ชจ๋“  ์œ„์น˜์™€ ๊ธธ์ด๋Š” 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜์ด๋‹ค. ์ง€๋ฆ„๊ธธ์˜ ์‹œ์ž‘ ์œ„์น˜๋Š” ๋„์ฐฉ ์œ„์น˜๋ณด๋‹ค ์ž‘๋‹ค.

 

 

์ถœ๋ ฅ

์„ธ์ค€์ด๊ฐ€ ์šด์ „ํ•ด์•ผ ํ•˜๋Š” ๊ฑฐ๋ฆฌ์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

 

 

ํ’€์ด๊ณผ์ •

๋ฌธ์ œ๋ถ€ํ„ฐ ์ดํ•ด๊ฐ€ ์ž˜ ๊ฐ€์ง€ ์•Š์•„ ์˜ˆ์ œ 1๋ฒˆ๋ถ€ํ„ฐ ํ•ด์„์„ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

5 150
0 50 10
0 50 20
50 100 10
100 151 10
110 140 90

์œ„์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ž…๋ ฅ๊ฐ’์ด ์ฃผ์–ด์งˆ ๋•Œ 0๋ถ€ํ„ฐ 150๊นŒ์ง€ ๊ฐ€๋Š” ์ตœ์†Œ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

0 ~ 50 ๊นŒ์ง€๋Š” 10์ด๋ผ๋Š” ์ง€๋ฆ„๊ธธ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ํšจ์œจ์ ์ด๋‹ˆ ์‚ฌ์šฉ์„ ํ•˜๊ณ  50 ~ 100๊นŒ์ง€๋„ 10์ด๋ผ๋Š” ์ง€๋ฆ„๊ธธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

100 ~ 151์€ 151๊นŒ์ง€ ๊ฐ€๋ฒ„๋ฆฐ ์ƒํ™ฉ์—์„œ๋Š” ๋‹ค์‹œ ๋˜๋Œ์•„๊ฐˆ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ 

110 ~ 140์€ ๊ฑฐ๋ฆฌ๊ฐ€ 90์ด๋ผ ๊ทธ๋ƒฅ ๊ฐ€๋Š”๊ฒƒ๋ณด๋‹ค ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ๋งŽ์ด ๋“ค์–ด ํŒจ์Šค๋ฅผ ํ•˜๋ฉด ๋‚จ์•„์žˆ๋Š” ์ง€๋ฆ„๊ธธ์ด ์—†์–ด์„œ 100 ~ 150์€ ๊ทธ๋ƒฅ ๊ธธ๋กœ ๊ฐ€๋ฉด

10 + 10 + 50 ์œผ๋กœ 70์ด๋ผ๋Š” ๊ฐ’์ด ๋‚˜์˜ค๊ธฐ ๋˜๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

 

ํ•ด๋‹น๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ฐ์ดํฌ์ŠคํŠธ๋ผ๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์š”๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋ผ์„œ ํ•ด๋‹น ๊ฐœ๋…์„ ์žก๋Š” ๊ฒŒ ์ƒ๋‹นํžˆ ์–ด๋ ค์› ๋˜ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋˜ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ’€์—ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ข…์ ์œผ๋กœ ๋ฌธ์ œ์—์„œ ์•Œ์•„๋‚ด์•ผํ•˜๋Š” D(์ตœ์ข…๋„์ฐฉ์ง€์ )๊นŒ์ง€ ๊ฐ€๋Š” ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ์•„์•ผ ํ•˜๋‹ˆ  dp์™€ ๊ฐ™์ด ์ด์ „์— ์ง€๋‚˜์˜จ ๊ธธ๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ

์ƒˆ๋กœ์šด ๊ธธ๋“ค์„ ์ƒˆ๋กญ๊ฒŒ ๊ฐฑ์‹ ํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ง€๋ฆ„๊ธธ์˜ ๋„์ฐฉ์ง€์ ์„ ๊ธฐ์ค€์œผ๋กœ ์‹œ์ž‘์ง€์ ์„ ๋ฐ”๋ผ๋ณด๋ฉด ์‹œ์ž‘์ง€์ ๊นŒ์ง€ ๊ฑธ๋ฆฐ ๊ฑฐ๋ฆฌ + ์ง€๋ฆ„๊ธธ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์ง€๋ฆ„๊ธธ ๋„์ฐฉ์ง€์ ๊นŒ์ง€ ์ค‘ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋„์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ๋ผ๋Š” ํ˜•์‹์œผ๋กœ ์ ํ™”์‹์„ ์„ธ์›Œ ๋ฌธ์ œ์˜ ์ ‘๊ทผ์„ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

code

#include <iostream>
#include <algorithm>
#include <vector>

const int INF = 10001;
int m[INF];
std::vector <std::pair<int, int> > vec[INF];

void	dijkstra(int d)
{
	m[0] = 0;
	for (int i = 1; i <= d; i++) {
		m[i] = m[i - 1] + 1;
		for (int j = 0; j < (int)vec[i].size(); j++) {
			m[i] = std::min(m[i], m[vec[i][j].first] + vec[i][j].second);
		}
	}
}

int		main(void)
{
	int n, d, u, v, num;

	std::cin >> n >> d;
	std::fill_n(m, INF, INF);
	for (int i = 0; i < n; i++) {
		std::cin >> u >> v >> num;
		if (d < v || v - u < num) continue;
		vec[v].push_back(std::make_pair(u, num));
	}
	dijkstra(d);
	std::cout << m[d];

	return (0);
}

 

ํ›„๊ธฐ

๋ฐ์ดํฌ์ŠคํŠธ๋ผ๋Š” ๋ญ”๊ฐ€ dp๋ž‘ ์œ ์‚ฌํ•˜๋‹ค๋ผ๋Š” ๋А๋‚Œ์„ ๋งŽ์ด ๋ฐ›์•˜๋˜ ๊ฑฐ ๊ฐ™๋‹ค.

์ฒ˜์Œ ์ ‘ํ•ด๋ด์„œ ๊ทธ๋Ÿฐ์ง€ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผ์„ ํ•ด์•ผํ• ์ง€ ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค๋Š” ๋А๋‚Œ์„ ๋ฐ›์•˜์—ˆ๋‹ค.

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

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

[๋ฐฑ์ค€] 24039๋ฒˆ - 2021์€ ๋ฌด์—‡์ด ํŠน๋ณ„ํ• ๊นŒ? (C++)  (0) 2023.09.01
[๋ฐฑ์ค€] 15719๋ฒˆ - ์ค‘๋ณต๋œ ์ˆซ์ž (C++)  (0) 2023.08.31
[๋ฐฑ์ค€] 18352๋ฒˆ - ํŠน์ • ๊ฑฐ๋ฆฌ์˜ ๋„์‹œ ์ฐพ๊ธฐ (C++)  (0) 2023.08.30
[๋ฐฑ์ค€] 1543๋ฒˆ - ๋ฌธ์„œ ๊ฒ€์ƒ‰ (JS)  (1) 2023.08.28
[๋ฐฑ์ค€] 2225๋ฒˆ - ํ•ฉ๋ถ„ํ•ด (C++)  (0) 2023.08.27
  1.  
  2. ๋ฌธ์ œ
  3. ์ž…๋ ฅ
  4. ์ถœ๋ ฅ
  5. ํ’€์ด๊ณผ์ •
  6. code
  7. ํ›„๊ธฐ
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
[๋ฐฑ์ค€] 1446๋ฒˆ - ์ง€๋ฆ„๊ธธ (C++)
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

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

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

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

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

๋ชจ๋“  ์˜์—ญ

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

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