*๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/12906
*ํ์ด๋ฐฉ๋ฒ
๋งจ ์ฒ์์ arr ๋ฒกํฐ์ ์๋ ๊ฐ์ answer ๋ฒกํฐ์ ๋ฃ๊ณ arr ๋ฒกํฐ๋ฅผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋๋ฉด์ answer ๋ฒกํฐ์ ๋ง์ง๋ง ๊ฐ๊ณผ ๋ค๋ฅด๋ฉด ๋ ๋ฃ๋๋ก ๊ตฌํํ๋ค.
vector(stack)์ ์ด์ฉํ ๋ฐฉ๋ฒ์ผ๋ก vector์ push_back(), back(), front() ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
* ์์๋ ๊ฒ
1) vector ํจ์๋ค
size() - ๋ฒกํฐ์ ์์์ ๊ฐ์ ๋ฐํ swap(vector๊ฐ์ฒด) - ๋ ๋ฒกํฐ์ ๋ด์ฉ ๊ตํ empty() - ๋ฒกํฐ๊ฐ ๋น์๋์ง ์ฌ๋ถ ๋ฐํ at(index) - index๋ฒ์งธ ์์ ์ ๊ทผ front() - ๋ฒกํฐ์ ์ฒซ ๋ฒ์งธ ์์ ๋ฐํ back() - ๋ฒกํฐ์ ๋ง์ง๋ง ์์ ๋ฐํ begin() - ๋ฒกํฐ์ ์ฒซ ๋ฒ์งธ ์์ end() - ๋ฒกํฐ์ ๋ง์ง๋ง ์์ |
2) vector์ ์ค๋ณต์์ ์ ๊ฑฐ ๋ฐฉ๋ฒ
๋๋ answer ๋ฒกํฐ๋ฅผ ํ๋ ๋ ๋๊ณ ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ ๋ง์ง๋ง ์์์ ๋ค๋ฅธ์ง๋ฅผ ํ๋จํ๋๋ฐ,
vector์ ์ค๋ณต์์๋ฅผ algorithm STL์ vector erase, unique ํจ์๋ฅผ ์ด์ฉํ๋ฉด ์ค๋ณต์ ๊ฑฐ๊ฐ ๋๋ค๋๋ผ.
์๋ฆฌ๋ฅผ ์์๋ณด์.
ex) 1 1 2 3 3 4 5 5 5 6
-> 1 2 3 4 5 6 5 5 5 6 (unique ์ ์ฉ)
vector์ unique ํจ์๋ฅผ ์ด์ฉํ๋ฉด ์ค๋ณต ์์๋ฅผ ์ ๊ฑฐํ๋ฉฐ ์๋ถํฐ ์ฑ์๋๊ฐ๋ค.
๊ทธ๋ผ ์๋ ๊ธธ์ด๋ณด๋ค ์ค๋ณต๋ ์์์ ๊ฐ์๋งํผ ์ค์ด๋ค๊ฒ ๋๊ณ ๋๋จธ์ง ์๋ฆฌ์๋ ๊ธฐ์กด ์์๊ฐ๋ค์ด ์ฑ์์ง๋ค.
์ฆ, ์ค์ด๋ ๊ฐ์๋ฅผ ์์๋ด์ ์๋ ๊ธธ์ด์์ ์ค์ด๋ ๊ฐ์๋งํผ์ ๋บ ๋ถ๋ถ์ ์ง์ฐ๋ฉด ๋๋ค.
์ฝ๋๋ก ๋ด๋ณด์.
#include <vector>
#include <algorithm>
int main(){
vector <int> v;
v.push_back(1);
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(3);
v.push_back(4);
v.push_back(5);
v.push_back(5);
v.push_back(5);
v.push_back(6); // 1 1 2 3 3 4 5 5 5 6
v.erase(unique(v.begin(), v.end()), v.end()); // 1 2 3 4 5 6
}
์์ฒ๋ผ unique ํจ์๋ฅผ ์ ์ฉํด์ ์ค๋ณต๋ ์์๊ฐ์๋งํผ ๊ธธ์ด๊ฐ ์ค์ด๋ vector์ ๋๋ถ๋ถ๋ถํฐ ๋ง์ง๋ง ๊ฐ๊น์ง ์ง์ฐ๋๋ก eraseํจ์๋ฅผ ์ ์ฉํ๋ฉด ๋๋ค.
* ์ฝ๋
#include <vector>
using namespace std;
vector<int> solution(vector<int> arr) {
vector<int> answer;
if (!arr.empty()) answer.push_back(arr.front());
for (auto& i : arr) {
if (answer.back() != i) {
answer.push_back(i);
}
}
return answer;
}
์ค๋ณต์ ๊ฑฐ๋ฅผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ตฌํํ ์ฝ๋
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> arr) {
arr.erase(unique(arr.begin(), arr.end()),arr.end());
return arr;
}
erase, unique ํจ์๋ก ์ค๋ณต์ ๊ฑฐํ ์ฝ๋
'๐ Coding Test Study > Algorithm Problem' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++][Programmers][์คํ/ํ] ํ๋ก์ธ์ค (0) | 2023.06.04 |
---|---|
[C++][Programmers][์คํ/ํ] ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2023.05.18 |
[C++][Programmers][ํด์] ์์ (feat. hash map ๋ฐ๋ณต๋ฌธ) (0) | 2023.05.16 |
[C++][Programmers][ํด์] ํฌ์ผ๋ชฌ (0) | 2023.05.15 |
[C++][Programmers][DFS/BFS] ์ฌํ๊ฒฝ๋ก (0) | 2023.05.09 |