๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/goorm

[๊ตฌ๋ฆ„LEVEL] ์†Œํฌ์™€ ๋ฒ„์Šค

by dar0m! 2020. 3. 16.
๋‚œ์ด๋„ ์ •๋‹ต๋ฅ 
โ˜…โ˜… 62.7%

 

 

๊ตฌ๋ฆ„LEVEL

๋‚œ์ด๋„๋ณ„ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•จ์œผ๋กœ์จ SW ์—ญ๋Ÿ‰์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

level.goorm.io

๋ฌธ์ œ

์†Œํฌ=์œ ์น˜์›์ƒ

์œ ์น˜์› ์ •๋ฅ˜์žฅ์„ ๊ฒฝ์šฐํ•˜๋Š” N๋Œ€๊ฐ€ ์žˆ๊ณ , ๊ฐ ๋ฒ„์Šค๋งˆ๋‹ค ๊ทธ ๋‚ ์˜ ์ตœ์ดˆ ์šดํ–‰ ์‹œ๊ฐ s์™€ ์ •ํ•ด์ง„ ๋ฃจํŠธ๋ฅผ ๋Œ๊ณ  ๋‹ค์‹œ ์›์œ„์น˜๋กœ ์˜ค๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ d๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 

์ •๋ฅ˜์žฅ์— ๊ฐ€์žฅ ๋จผ์ € ๋„์ฐฉํ•˜๋Š” ๋ฒ„์Šค๋ฅผ ํƒ€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฒ„์Šค๋Š” 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๊ณ , ๋งŒ์•ฝ ์ •๋ฅ˜์žฅ์— ๊ฐ€์žฅ ๋จผ์ € ๋„์ฐฉํ•˜๋Š” ๋ฒ„์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๋Œ€๋ผ๋ฉด ๋ฒˆํ˜ธ๊ฐ€ ๋” ์ž‘์€ ๋ฒ„์Šค๋ฅผ ํƒ„๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์†Œํฌ๊ฐ€ ์ •๋ฅ˜์žฅ์— ๋„์ฐฉํ•œ ์‹œ๊ฐ์ด T์ผ ๋•Œ, ์†Œํฌ์™€ ์†Œํฌ๊ฐ€ ํƒ€๊ฒŒ ๋  ๋ฒ„์Šค๋Š” ๋ช‡ ๋ฒˆ์ธ์ง€ ๊ตฌํ•ด์ฃผ์„ธ์š”.

 

ํ•ด๊ฒฐ

key point, ๊ฐ ๋ฒ„์Šค๋งˆ๋‹ค ๋„์ฐฉ์‹œ๊ฐ„์ด T์™€ ๊ฐ™๊ฑฐ๋‚˜ ํฌ๊ฒŒ ๋˜๋Š” ์ตœ์ดˆ์˜ ์‹œ๊ฐ๋งŒ ์ฐพ์œผ๋ฉด ๋œ๋‹ค.
  1. i๋ฒˆ์งธ ๋ฒ„์Šค์˜ ์ตœ์ดˆ ์šดํ–‰ ์‹œ๊ฐ s์™€, ๋‹ค์‹œ ์ •๋ฅ˜์žฅ์œผ๋กœ ๋Œ์•„์˜ค๊ฒŒ๋˜๋Š” ์‹œ๊ฐ„ d๋ฅผ arr[i]์— ์ €์žฅํ•œ๋‹ค.
  2. 1๋ฒˆ ๋ถ€ํ„ฐ N๋ฒˆ ๋ฒ„์Šค์— ๋Œ€ํ•ด์„œ ๊ฐ ๋ฒ„์Šค์— ํ•ด๋‹นํ•˜๋Š” d๋ฅผ s์— ๋”ํ•œ๋‹ค.
  3. s๊ฐ€ ์†Œํฌ๊ฐ€ ์ •๋ฅ˜์žฅ์— ๋„์ฐฉํ•˜๋Š” ์‹œ๊ฐ„์ธ t๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ๊นŒ์ง€ ๋”ํ•ด์ค€๋‹ค.
  4. ๊ทธ๋ฆฌํ•˜์—ฌ ๊ตฌํ•ด๋‚ธ i๋ฒˆ์งธ ๋ฒ„์Šค๊ฐ€ T์™€ ๊ฐ™๊ฑฐ๋‚˜ ํฌ๊ฒŒ๋˜๋Š” ์ตœ์ดˆ์˜ ์‹œ๊ฐ์„ ๋ช‡ ๋ฒˆ์งธ ๋ฒ„์Šค์ธ์ง€ v๋ฐฐ์—ด์— pair๋กœ ์ €์žฅํ•˜๊ณ 
  5. v๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜์—ฌ v๋ฐฐ์—ด ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๋ฒ„์Šค๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

while๋ฌธ ์•ˆ์— ๋งค๋ฒˆ v.push_back()์„ ์ด์šฉํ•˜์—ฌ ๋„ฃ์—ˆ๋‹ค๊ฐ€ 4๋ฒˆ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์—์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ์—ˆ๋‹ค. ์‚ฌ์‹ค์ƒ while๋ฌธ ๋ฐ”๊นฅ์œผ๋กœ ๋‚˜์™”์„ ๋•Œ๊ฐ€ i๋ฒˆ์งธ ๋ฒ„์Šค์˜ ๋„์ฐฉ์‹œ๊ฐ„์ด T์™€ ๊ฐ™๊ฑฐ๋‚˜ ํฌ๊ฒŒ ๋˜๋Š” ์ตœ์ดˆ์˜ ์‹œ๊ฐ์ด๋ฏ€๋กœ while๋ฌธ ๋ฐ”๊นฅ์œผ๋กœ ๋บ๋”๋‹ˆ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค. ์•ž์œผ๋กœ๋„ ์œ ์˜ํ•˜๊ธ”...

 

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef pair<intint> p;
p arr[100005];
vector<p> v;
int n, t, ans;
int main() {
    scanf("%d %d"&n, &t);
    for (int i = 1, s, d; i <= n; i++) {
        scanf("%d %d"&s, &d);
        arr[i] = { s, d };
    }
    for (int i = 1; i <= n; i++) {
        while (arr[i].first < t) {
            arr[i].first += arr[i].second;
        }
        v.push_back({ arr[i].first, i });
    }
    sort(v.begin(), v.end());
    
    printf("%d", v[0].second);
    return 0;
}
cs

๋Œ“๊ธ€