https://school.programmers.co.kr/learn/courses/30/lessons/42840
๋ฌธ์ ์ค๋ช
์ํฌ์๋ ์ํ์ ํฌ๊ธฐํ ์ฌ๋์ ์ค๋ง์ ๋๋ค. ์ํฌ์ ์ผ์ธ๋ฐฉ์ ๋ชจ์๊ณ ์ฌ์ ์ํ ๋ฌธ์ ๋ฅผ ์ ๋ถ ์ฐ์ผ๋ ค ํฉ๋๋ค. ์ํฌ์๋ 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ํ๋ ๊ฐ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
์ ์ถ๋ ฅ ์
answers | return |
[1,2,3,4,5] | [1] |
[1,3,2,4,2] | [1,2,3] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ์ํฌ์ 1์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๋งํ์ต๋๋ค.
- ์ํฌ์ 2๋ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํ๋ ธ์ต๋๋ค.
- ์ํฌ์ 3์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํ๋ ธ์ต๋๋ค.
๋ฐ๋ผ์ ๊ฐ์ฅ ๋ฌธ์ ๋ฅผ ๋ง์ด ๋งํ ์ฌ๋์ ์ํฌ์ 1์ ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ๋ชจ๋ ์ฌ๋์ด 2๋ฌธ์ ์ฉ์ ๋ง์ท์ต๋๋ค.
๋ด ํด๋ต
์ฒ์์๋ ๊ฐ ์ํฌ์๋ค์ ์ ๋ต ํจํด์ ๋ง๊ฒ i๋ฒ์งธ ๋ฌธ์ ์ ์ํฌ์ ๋ต์ ๊ตฌํ ๋ค, ์ ๋ต๊ณผ ๋น๊ตํ๋ ค๊ณ ํ๋ค.
๊ทธ๋ฌ๋ 3๋ฒ์งธ ์ํฌ์์ ํจํด์ ๊ณต์์ผ๋ก ํํํ๊ธฐ๊ฐ ์ด๋ ค์ ๋ฐฉํฅ์ ๋ฐ๊ฟจ๋ค. (๊ฒ๋ค๊ฐ ์ํฌ์ 2๋ ํ๋ ธ๋ค.)
// ์ํฌ์1์ ์ ๋ต
int ans = i % 5;
if(ans == 0 )
ans = 5;
if(answers[i] == ans)
++scores[0];
// ์ํฌ์ 2์ ์ ๋ต
if(i % 2 == 1)
ans = 2;
else
{
ans = (i / 2) % 5;
if(ans == 0 )
ans = 5;
}
if(answers[i] == ans)
++scores[1];
// ์ํฌ์ 3์ ์ ๋ต
// ???
3๋ช ์ ์ํฌ์์ ์ ๋ต ํจํด์ ๋ฐฑํฐ์ ๋ฃ์ ๋ค์ i๋ฒ์งธ ๋ฌธ์ ์ ์ํฌ์ ๋ต์ ๊ตฌํ ๋ค, ์ ๋ต๊ณผ ๋น๊ตํ์๋ค.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> answers) {
vector<int> answer;
vector<int> scores{0, 0, 0};
vector<vector<int>> ans_patterns{{1, 2, 3, 4, 5}, {2,1,2,3,2,4,2,5}, {3,3,1,1,2,2,4,4,5,5}};
// 3๋ช
์ ์ํฌ์์ ์ ๋ต ํจํด๊ณผ ์ ๋ต์ ๋น๊ต
for(int s = 0; s < 3; ++s)
{
for(int i = 0; i < answers.size(); ++i)
{
if(ans_patterns[s][i % ans_patterns[s].size()] == answers[i])
++scores[s];
}
}
// ์ต๋ ์ ๋ต์๋ฅผ ๊ตฌํด ์ต๋ ์ ๋ต์๋งํผ ๋ง์ถ ์ํฌ์๋ค์ ์ ๋ต ๋ฐฐ์ด์ ๋ฃ๋๋ค.
int max = *max_element(scores.begin(), scores.end());
for(int i = 0; i < 3; ++i)
{
if(max == scores[i])
answer.push_back(i+1);
}
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค / level.2 / ์นดํซ(C++) (0) | 2023.03.30 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค / level.2 / ์์ ์ฐพ๊ธฐ(C++) (0) | 2023.03.28 |
ํ๋ก๊ทธ๋๋จธ์ค / level.1 / ์ต์์ง์ฌ๊ฐํ(C++) (0) | 2023.03.27 |
ํ๋ก๊ทธ๋๋จธ์ค / level.2 / H-Index(C++) (0) | 2023.03.24 |
ํ๋ก๊ทธ๋๋จธ์ค / level.2 / ๊ฐ์ฅ ํฐ ์(C++) (0) | 2023.03.23 |