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

[BOJ] #13414 ์ˆ˜๊ฐ•์‹ ์ฒญ

by dar0m! 2020. 5. 2.
์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ •๋‹ต ๋น„์œจ
 1์ดˆ  256MB 19.578%

 

 

13414๋ฒˆ: ์ˆ˜๊ฐ•์‹ ์ฒญ

์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋Š” ํ‘œ์ค€ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž…๋ ฅ์€ 1๊ฐœ์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ž…๋ ฅ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๊ณผ๋ชฉ์˜ ์ˆ˜๊ฐ• ๊ฐ€๋Šฅ ์ธ์› K(1 ≤ K ≤ 100,000)์™€ ํ•™์ƒ๋“ค์ด ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ์ˆœ์„œ๋ฅผ ๊ธฐ๋กํ•œ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๊ธธ์ด L(1 ≤ L ≤ 500,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ L๊ฐœ์˜ ์ค„์—๋Š” ์ˆ˜๊ฐ•์‹ ์ฒญ์„ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ํ•™์ƒ์˜ ํ•™๋ฒˆ์ด ํด๋ฆญ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ํ•™๋ฒˆ์€ 8์ž๋ฆฌ์˜ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ

 

์‹œํ–‰์ฐฉ์˜ค

์ฒ˜์Œ์— ์ ‘๊ทผ์„ ์ž˜๋ชปํ•ด์„œ ์—ด๋ผ ๋งŽ์ด ํ‹€๋ฆผ. ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๋„ ๋‚ฌ์—ˆ๊ณ  ๋Ÿฐํƒ€์ž„์—๋Ÿฌ ์žก์œผ๋‹ˆ ์‹œ๊ฐ„์ดˆ๊ณผ ๋– ์„œ ์™„์ „ ๋ฉ˜๋ถ•..

์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜จ ํ•™๋ฒˆ๋“ค์„ ๋‹ค๋ฅธ ๋ฐฐ์—ด์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœ map์œผ๋กœ๋งŒ ํ’€ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ์‹ถ์–ด์„œ map์— {ํ•™๋ฒˆ, ์ˆœ์„œ}๋ฅผ ์ €์žฅํ–ˆ๊ณ  ๊ทธ ํ›„์—, key๊ฐ€ ์•„๋‹Œ value๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์–ด์„œ vector๋กœ ๋ณต์‚ฌํ•˜๊ณ , cmpํ•จ์ˆ˜ ์‚ฌ์šฉํ•ด์„œ ์ •๋ ฌํ•˜๊ณ , ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ–ˆ์—ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ์•ˆ๋‚  ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ ๋ณต์‚ฌํ•˜๋Š”๋ฐ ์˜ค๋ž˜๊ฑธ๋ฆฐ๊ฑด์ง€.. ๋„๋Œ€์ฒด ์™œ ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚ฌ๋Š”์ง€ ์•„์ง๋„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ฒฐ๊ตญ ์ „๋ถ€ ์ง€์šฐ๊ณ  ๋‹ค์‹œํ’€์—ˆ๋Š”๋ฐ, map์„ value๊ฐ’์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ž…๋ ฅ๋ฐ›์•˜์„ ๋•Œ ์ž…๋ ฅ๋ฐ›์€ ํ•™๋ฒˆ๋“ค์„ ๋ฐฐ์—ด์— ์ €์žฅํ•ด์„œ ๋ฐฐ์—ด์„ ์ด์šฉํ•ด์„œ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋˜ ํ•˜๋‚˜ ์–ด๋ ค์› ๋˜ ์ ์€ string์„ ์“ฐ์ง€ ์•Š๊ณ  intํ˜•์œผ๋กœ ์ž…๋ ฅ์„ ๋ฐ›๋‹ค๋ณด๋‹ˆ 0000000 ์ด๋Ÿฐ ๊ฐ’์€ 0์œผ๋กœ ์ธ์‹๋˜์–ด์„œ 8์ž๋ฆฌ๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•˜์—ฌ ์ถœ๋ ฅํ˜•์‹์„ "%08d" ์ด๋ ‡๊ฒŒ ์ผ๋‹ค. ์˜๋ฏธ๋Š” 8์ž๋ฆฌ ์™ผ์ชฝ์ •๋ ฌ์ด๋ฉฐ ๋นˆ ๊ณต๊ฐ„์€ 0์œผ๋กœ ์ฑ„์šฐ๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. %08d ํ˜•์‹์ง€์ •์ž๋ฅผ ์”€์œผ๋กœ์จ string์„ ์ž…์ถœ๋ ฅ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ์•„๋ž˜ ๋ฌธ์žฅ๋“ค์„ ์•ˆ์จ๋„ ๋ผ์„œ ์ฐธ ์ข‹์•˜๋‹ค.

ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

 

์ฐธ๊ณ  ๋งํฌ 1. vector ์ •๋ ฌ: vector cmp ํ•จ์ˆ˜ ๊ด€๋ จ

 

How do I sort a vector of pairs based on the second element of the pair?

If I have a vector of pairs: std::vector<std::pair<int, int=""> > vec; Is there and easy way to sort the list in increasing order based on the second element of the pair? I know I can w...</std::pair<int,>

stackoverflow.com

์ฐธ๊ณ  ๋งํฌ 2. ์–ธ์–ด๋ณ„ input method ๋น„๊ต: cin, cout ์“ธ ๋•Œ ์œ„์˜ ๋ฌธ์žฅ์„ ์จ์•ผํ•˜๋Š” ์ด์œ 

 

algospot.com :: ์ž์œ ๊ฒŒ์‹œํŒ: ๊ฐ ์–ธ์–ด๋ณ„ input method ๋น„๊ต

๊ฐ ์–ธ์–ด๋ณ„ input method ๋น„๊ต 13๊ฐœ์˜ ๋Œ“๊ธ€์ด ์žˆ์Šต๋‹ˆ๋‹ค.

algospot.com

์ฝ”๋“œ ์ผ๋ถ€

bool cmp(const p& a, const p& b) {
	return a.second < b.second;
}


// ๋ฉ”์ธํ•จ์ˆ˜
map<int, int> m;
...
// map ๋ณต์‚ฌ
vector<p> v(m.begin(), m.end());
//sort(v.begin(), v.end(), cmp);

// c++14 ์—์„œ๋Š” auto๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋ ‡๊ฒŒ ์ •๋ ฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
sort(v.begin(), v.end(), [](auto& left, auto& right) {
		return left.second < right.second;
});

...

 

ํ•ด๊ฒฐ

key point, map์„ ํ™œ์šฉํ•ด์„œ ๊ฐ ํ•™์ƒ์ด ์ตœ์ข…์ ์œผ๋กœ ๋ช‡ ๋ฒˆ์งธ๋กœ ๋“ค์–ด์™”๋Š”์ง€ ์ €์žฅํ•œ๋‹ค.
  1. ํ•™๋ฒˆ์„ key๋กœ, ๋“ค์–ด์˜จ ์ˆœ์„œ๋ฅผ value๋กœ map์„ ๊ตฌ์„ฑํ•œ๋‹ค.
  2. ์ž…๋ ฅ๋ฐ›์€ ํ•™๋ฒˆ์€ ๋˜ ๋‹ค๋ฅธ int๋ฐฐ์—ด์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•œ๋‹ค.
  3. 1๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ˆœ์„œ๊นŒ์ง€ ์ฐจ๋ก€๋กœ ๋Œ๋ฉด์„œ i๋ฒˆ์งธ๋กœ ๋“ค์–ด์˜จ ํ•™์ƒ์ด map์—์„œ ์ €์žฅํ•œ ์ˆœ์„œ์™€ ๊ฐ™์€์ง€ ํŒ๋‹จํ•˜์—ฌ ๊ฐ™์œผ๋ฉด ์ถœ๋ ฅํ•˜๊ณ  cnt๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  4. cnt๊ฐ€ k์™€ ๊ฐ™์•„์ง€๋ฉด k๋ช…๊นŒ์ง€ ๋ชจ๋‘ ์„ ์ •๋œ ๊ฒƒ์ด๋ฏ€๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•œ๋‹ค.

 

์ฝ”๋“œ

๋ฉ”๋ชจ๋ฆฌ ์‹œ๊ฐ„
 13312 KB  472 ms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
int k, l, arr[500005];
map<intint> m;
int main() {
    scanf("%d %d"&k, &l);
    string s;
    for (int i = 0; i < l; i++) {
        scanf("%d"&arr[i]);
        m[arr[i]] = i;
    }
    int cnt = 0;
    for (int i = 0; i < l; i++) {
        if (cnt >= k)break;
        if (m[arr[i]] == i) {
            printf("%08d\n", arr[i]);
            cnt++;
        }
    }
    
    return 0;
}
cs

 

ํ›„๊ธฐ

์ฒ˜์Œ ์ ‘๊ทผ์„ ์ž˜๋ชปํ•ด์„œ ํฐ ์ฝ” ๋‹ค์นœ ๋ฌธ์ œ.. ์žŠ์ง€ ์•Š๊ฒ ์–ด
๊ทธ๋ฆฌ๊ณ  ์ด๋ฒˆ ๋ฌธ์ œ ๋˜ํ•œ k๋Œ€์‹  ์ƒ์ˆ˜๋ฅผ ์จ์„œ ๋งŽ์ด ํ‹€๋ ธ๋Š”๋ฐ... ๋งˆ์ง€๋ง‰ ์‹ค์ˆ˜์ด๊ธธ

'๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ > BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] #1912 ์—ฐ์†ํ•ฉ  (0) 2020.05.11
[BOJ] #2512 ์˜ˆ์‚ฐ  (0) 2020.05.11
[BOJ] #1748 ์ˆ˜ ์ด์–ด ์“ฐ๊ธฐ 1  (0) 2020.04.23
[BOJ] #1953 ํŒ€๋ฐฐ๋ถ„  (0) 2020.04.21
[BOJ] #1068 ํŠธ๋ฆฌ  (1) 2020.04.17

๋Œ“๊ธ€