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

[๊ตฌ๋ฆ„LEVEL] Dance Dance Revolution

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

ํ”„๋ฆฌ๋ฏธ์—„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ„ํด๋ฆฌ ๋น„ํƒ€์•Œ๊ณ  ์‹œ์ฆŒ3 20๋…„ 3์›” 3์ฃผ์ฐจ

 

goorm

๊ตฌ๋ฆ„์€ ํด๋ผ์šฐ๋“œ ๊ธฐ์ˆ ์„ ์ด์šฉํ•˜์—ฌ ๋ˆ„๊ตฌ๋‚˜ ์ฝ”๋”ฉ์„ ๋ฐฐ์šฐ๊ณ , ์‹ค๋ ฅ์„ ํ‰๊ฐ€ํ•˜๊ณ , ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ์†Œํ”„ํŠธ์›จ์–ด ์ƒํƒœ๊ณ„์ž…๋‹ˆ๋‹ค.

www.goorm.io

๋ฌธ์ œ

DDR์€ ๋‘ ๋ฐœ์„ ์ด์šฉํ•˜์—ฌ ํ”Œ๋ ˆ์ดํ•˜๋Š” ๊ฒŒ์ž„์œผ๋กœ ๋ฒ„ํŠผ์€ ๋™์‹œ์— ์ตœ๋Œ€ 2๊ฐœ๊นŒ์ง€๋งŒ ๋ˆ„๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์€ ๋…ธ๋ž˜์˜ ์Œ๊ณผ ๋ฐ•์ž์— ๋งž์ถฐ ์ ์ ˆํ•œ ์•…๋ณด๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ์ด ํ”Œ๋ ˆ์ดํ•  ์ˆ˜ ์žˆ๋Š” ์•…๋ณด์ธ์ง€๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ๊ณ„์‚ฐํ•ด์ค€ ์•…๋ณด๋ฅผ ์‚ฌ๋žŒ์ด ํ”Œ๋ ˆ์ดํ•  ์ˆ˜ ์žˆ๋Š” ์•…๋ณด์ธ์ง€ ํ™•์ธํ•ด๋ณด์ž!

์ž…๋ ฅ ๋ฒ„ํŠผ ๊ฐœ์ˆ˜ N (1 ≤ N ≤ 500,000)

๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ ๊ฐ ์ค„์—๋Š” ๋ˆŒ๋Ÿฌ์•ผ ํ•  ๋ฒ„ํŠผ๊ณผ ํ•ด๋‹น ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์•ผ ํ•˜๋Š” ์‹œ๊ฐ์ด ์ฃผ์–ด์ง„๋‹ค.

์‚ฌ๋žŒ์ด ํ”Œ๋ ˆ์ดํ•  ์ˆ˜ ์žˆ๋Š” ์•…๋ณด๋ผ๋ฉด 1์„ ์—†๋‹ค๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ•ด๊ฒฐ

key point, map์‚ฌ์šฉ. ์‹œ๊ฐ์„ key๋กœ ์žก๊ณ  value๊ฐ’์„ ๋ˆŒ๋Ÿฌ์•ผํ•  ๋ฒ„ํŠผ ๊ฐœ์ˆ˜๋กœ ๋ณธ๋‹ค.
  • ๋ฒ„ํŠผ ๋ฒˆํ˜ธ์™€ ์‹œ๊ฐ์ด ์ฃผ์–ด์ง€๋ฉด ํ•ด๋‹น ์‹œ๊ฐ์„ key๋กœ ์žก๊ณ  value๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์ฆ๊ฐ€์‹œํ‚จ ๋ฒ„ํŠผ ๊ฐœ์ˆ˜๊ฐ€ 2๊ฐœ๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด flg๋ณ€์ˆ˜๋ฅผ 1๋กœ ๊ฐฑ์‹ ํ•œ๋‹ค.
  • ์ž…๋ ฅ์„ ๋ชจ๋‘ ๋ฐ›๊ณ ๋‚˜์„œ flg๊ฐ€ 1์ด๋ผ๋ฉด 0์„ ์•„๋‹ˆ๋ผ๋ฉด 1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
map<intint> m;
int n, flg;
int main() {
    scanf("%d"&n);
    for (int i = 0, a, b; i < n; i++) {
        scanf("%d %d"&a, &b);
        m[b]++;
        if (m[b] > 2) flg = 1;
    }
    if (flg)    printf("0");
    else printf("1");
    
    return 0;
}
cs

 

๊ณ ์น˜๊ธฐ ์ „ ์ฝ”๋“œ

  • ์ž…๋ ฅ์„ ์ „๋ถ€ ๋ฐ›๊ณ ๋‚˜์„œ
  • ๋ฌด์ž‘์œ„ ๋ฒˆํ˜ธ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ๋ฒˆํ˜ธ์˜ value๊ฐ’์ด 2๋ฅผ ์ดˆ๊ณผํ•˜๋Š”์ง€ ํ™•์ธ
  • 2๋ฅผ ์ดˆ๊ณผํ•œ๋‹ค๋ฉด flg๋ฅผ 1๋กœ ๊ฐฑ์‹ ์‹œํ‚ค๊ณ  ๋ฐ˜๋ณต๋ฌธ์„ ๋‚˜๊ฐ„๋‹ค.
  • 2๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ณ„์†ํ•ด์„œ ํ™•์ธํ•œ๋‹ค.
  • ๋ฐ˜๋ณต๋ฌธ์„ ๋‚˜์™”์„ ๋•Œ flg๊ฐ’์ด 1์ด๋ฉด 0์„ ์•„๋‹ˆ๋ฉด 1์„ ์ถœ๋ ฅํ•œ๋‹ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
map<intint> m;
int n, flg;
int main() {
    scanf("%d"&n);
    for (int i = 0,a,b; i < n; i++) {
        scanf("%d %d"&a, &b);
        m[b]++;
    }
    map<intint>::iterator iter;
    for (iter = m.begin(); iter != m.end(); iter++) {
        if (iter->second > 2) {
            flg = 1break;
        }
    }
    flg ? printf("0") : printf("1");
    return 0;
}
cs

 

ํ›„๊ธฐ

map iterator๋ฅผ ์ฒ˜์Œ์จ๋ดค๋‹ค. vector๋ฐฐ์—ด ์“ฐ๋˜ ๊ฒƒ ์ฒ˜๋Ÿผ

for(int i = 0; i<m.size(); i++) 
    if(m[i]>2) ... 

์œ„์™€ ๊ฐ™์ด ์ ‘๊ทผํ–ˆ๋‹ค๊ฐ€ runtime error๊ฐ€ ๋– ์„œ ๋ฐฐ์—ด์— ์ž˜๋ชป ์ ‘๊ทผํ•˜๊ณ  ์žˆ์Œ์„ ๊นจ๋‹ฌ์•˜๋‹ค... 

map์‚ฌ์šฉํ•  ๋•Œ ์žŠ์ง€์•Š๊ธฐ!!

 

๋Œ“๊ธ€