2023. 6. 14. 02:28ใCoding Test/Programmers
๐๋ฌธ์ ๋ณด๋ฌ๊ฐ๊ธฐ
๐จ๐ปํ์ด ๊ณผ์
์ค๋ณต์์ด ์ ์ฅ์ ํด์ผ ํ๋, set์ ์ ์ฅํ์์ต๋๋ค. ์ฐ์ ์์ด ํฉ๊ณ๋ฅผ ๊ตฌํ๋ ๋ถ๋ถ์์ deque๋ฅผ ํ์ฉํ์ฌ ํ์์ต๋๋ค. ์ธ๋ฑ์ฑ์ด ๊ฐ๋ฅํ๊ณ , ๋งจ ์ ๋งจ ๋ค ์ฝ์ ์ญ์ ๊ฐ ํจ์จ์ ์ธ deque๋ผ๋ฉด ์ข์ ํจ์จ์ ๋ผ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. vector์ ์ ์ฅ๋์ด ์๋ elements์ ์์๋ค์ ๋ชจ์กฐ๋ฆฌ deque๋ก ์ฎ๊ฒจ ์ ์ฅํฉ๋๋ค.
2. 0๋ฒ ์ธ๋ฑ์ค๋ถํฐ ์ถ์ถํ ๊ฐ์ (1 ~ element.size()) ์ธ๋ฑ์ค๋งํผ์ ํฉ๊ณ๋ฅผ ๊ตฌํฉ๋๋ค.
- ํฉ๊ณ๋ฅผ set์ ์ ์ฅํฉ๋๋ค.
- deque์ ๋งจ ์ ์์๋ฅผ ๋งจ ๋ค๋ก ๋ณด๋ ๋๋ค.
- deque์ ์์์ ๊ฐ์๋งํผ ๋ฐ๋ณตํฉ๋๋ค.
์ ์์ ๋ฅผ ์๋ก ๋ค๋ฉด, [7, 9, 1, 1, 4]์์ ์ฐ์ ๋ถ๋ถ ์์ด ๊ธธ์ด๊ฐ 2์ธ ๊ฒ์ ๋ง๋ ๋ค๊ณ ํ์์ ๋,
#1
7 9 1 1 4
// 7 + 9 = 16 -> set์ ์ ์ฅ
// 7์ ๋งจ ๋ค๋ก ๋ณด๋
#2
9 1 1 4 7
// 9 + 1 = 10 -> set์ ์ ์ฅ
// 9๋ ๋งจ ๋ค๋ก ๋ณด๋
...
#5
4 7 9 1 1
// 4 + 7 = 11 -> set์ ์ ์ฅ
// 4๋ ๋งจ ๋ค๋ก ๋ณด๋ -> 7 9 1 1 4๋ก ์๋๋๋ก ๋์์ด -> ๋ฃจํ ๋
โ๏ธ์์ค ์ฝ๋ ๋ฐ ๊ฒฐ๊ณผ
#include <set>
#include <deque>
#include <vector>
using namespace std;
int Sum(const deque<int>& myDeque, int selection) {
int sum = 0;
for (int i = 0; i < selection; i++)
sum += myDeque[i];
return sum;
}
deque<int> MigrationToDeque(const vector<int>& elements) {
deque<int> result(elements.size());
for (int i = 0; i < result.size(); i++)
result[i] = elements[i];
return result;
}
int solution(vector<int> elements) {
deque<int> myDeque = MigrationToDeque(elements);
set<int> answers;
for (int selection = 1; selection < myDeque.size(); selection++) {
for (int start = 0; start < myDeque.size(); start++) {
int sum = Sum(myDeque, selection);
answers.insert(sum);
int front = myDeque.front();
myDeque.push_back(front);
myDeque.pop_front();
}
}
int sum = Sum(myDeque, myDeque.size()); // ์ ๋ถ ์ ํํ๋ ๊ฒ์ ๋ฐ๊ฟ๊ฐ๋ฉฐ ํด๋ ๊ฐ์ด ๋๊ฐ์ผ๋ฏ๋ก ํ ๋ฒ๋ง ์ํ
answers.insert(sum);
return answers.size();
}
'Coding Test > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] Lv2. ํ๋ ฌ์ ๊ณฑ์ | C++ (0) | 2023.06.15 |
---|---|
[Programmers] Lv2. n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ | C++ (0) | 2023.06.14 |
[Programmers] Lv2. ๊ตฌ๋ช ๋ณดํธ | C++ (0) | 2023.06.13 |
[Programmers] Lv2. ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ | C++ (0) | 2023.06.12 |
[Programmers] Lv2. ํผ๋ณด๋์น ์ | C++ (0) | 2023.06.12 |