Algorithm/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[C++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - "๋ชจ์˜๊ณ ์‚ฌ" ํ’€์ด

meeeeejin 2020. 7. 3. 18:58

๋ฌธ์ œ ์„ค๋ช…

 

์ˆ˜ํฌ์ž๋Š” ์ˆ˜ํ•™์„ ํฌ๊ธฐํ•œ ์‚ฌ๋žŒ์˜ ์ค€๋ง์ž…๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž ์‚ผ์ธ๋ฐฉ์€ ๋ชจ์˜๊ณ ์‚ฌ์— ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ์ „๋ถ€ ์ฐ์œผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž๋Š” 1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐ์Šต๋‹ˆ๋‹ค.

 

1๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๋ฐฉ์‹: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...

 

1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€์˜ ์ •๋‹ต์ด ์ˆœ์„œ๋Œ€๋กœ ๋“ค์€ ๋ฐฐ์—ด answers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งžํžŒ ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

<์ œํ•œ ์กฐ๊ฑด>

  • ์‹œํ—˜์€ ์ตœ๋Œ€ 10,000 ๋ฌธ์ œ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ์˜ ์ •๋‹ต์€ 1, 2, 3, 4, 5์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜๋ฅผ ๋ฐ›์€ ์‚ฌ๋žŒ์ด ์—ฌ๋Ÿฟ์ผ ๊ฒฝ์šฐ, returnํ•˜๋Š” ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”.

 

๋ฌธ์ œ ์ฃผ์†Œ: https://programmers.co.kr/learn/courses/30/lessons/42840?language=cpp

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ชจ์˜๊ณ ์‚ฌ

์ˆ˜ํฌ์ž๋Š” ์ˆ˜ํ•™์„ ํฌ๊ธฐํ•œ ์‚ฌ๋žŒ์˜ ์ค€๋ง์ž…๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž ์‚ผ์ธ๋ฐฉ์€ ๋ชจ์˜๊ณ ์‚ฌ์— ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ์ „๋ถ€ ์ฐ์œผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜ํฌ์ž๋Š” 1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฐ์Šต๋‹ˆ๋‹ค. 1๋ฒˆ ์ˆ˜ํฌ์ž๊ฐ€ ์ฐ๋Š” ๏ฟฝ๏ฟฝ

programmers.co.kr

 

 

 

 

 

 

๋ฌธ์ œ ํ’€์ด

 

์™„์ „ ํƒ์ƒ‰ ์นดํ…Œ๊ณ ๋ฆฌ์— ์žˆ๋Š” ๋ฌธ์ œ๋‹ต๊ฒŒ, 1๋ฒˆ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๊นŒ์ง€ ๊ฐ ์ˆ˜ํฌ์ž๋“ค์˜ ์ •๋‹ต์ด ๋งž๋Š”์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜์—ฌ ์ ์ˆ˜๋ฅผ ๊ธฐ๋กํ•˜๋ฉด ๋œ๋‹ค. ์ ์ˆ˜๋ฅผ ๊ธฐ๋กํ•œ ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜๋ฅผ ๋ฐ›์€ ํ•™์ƒ๋“ค์„ answer ๋ฐฐ์—ด์— ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

์ด๋•Œ ์ˆ˜ํฌ์ž 1์ด ์ฐ๋Š” ๋ฐฉ์‹์€ 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... ์ด๋ฏ€๋กœ {1, 2, 3, 4, 5}๊ฐ€ ๋ฐ˜๋ณต๋œ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆ˜ํฌ์ž 1์˜ ๋‹ต์•ˆ์„ {1, 2, 3, 4, 5} ๋ฐฐ์—ด๋กœ ์„ ์–ธํ•˜๊ณ , i๋ฒˆ์งธ ๋‹ต์•ˆ์ด ๋งž์•˜๋Š”์ง€ ๋น„๊ตํ•  ๋•Œ

์ˆ˜ํฌ์ž1[i % 5]์™€ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

 

์†Œ์Šค ์ฝ”๋“œ

 

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
26
27
28
29
30
31
32
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
vector<int> solution(vector<int> answers) {
    vector<int> answer;
    vector<int> score(30);   // ํ•™์ƒ1, 2, 3์˜ ์ ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด
    vector<int> student1 = { 12345 };
    vector<int> student2 = { 21232425 };
    vector<int> student3 = { 3311224455 };
    int len = answers.size();
 
    for (int i = 0; i < len; ++i) {
        if (answers[i] == student1[i % 5])  // student1.size() = 5
            score[0+= 1;
        if (answers[i] == student2[i % 8]) // student2.size() = 8
            score[1+= 1;
        if (answers[i] == student3[i % 10]) // student3.size() = 10
            score[2+= 1;
    }
 
    // ์ตœ๊ณ  ์ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ , ํ•ด๋‹น ํ•™์ƒ์„ answer ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค. 
    int max_score = *max_element(score.begin(), score.end());    
    for (int i = 0; i < 3++i)
        if (score[i] == max_score)
            answer.push_back(i + 1);
 
    return answer;
}
cs

 

 

 

 

 

728x90