-
[C++] ํ๋ฆฐํฐ์ฝ๋ฉํ ์คํธ/์ฝ๋ฉํ ์คํธ ์ฐ์ต 2019. 9. 21. 23:55728x90
๋ฌธ์ ์ค๋ช
์ผ๋ฐ์ ์ธ ํ๋ฆฐํฐ๋ ์ธ์ ์์ฒญ์ด ๋ค์ด์จ ์์๋๋ก ์ธ์ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ค์ํ ๋ฌธ์๊ฐ ๋์ค์ ์ธ์๋ ์ ์์ต๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ค์๋๊ฐ ๋์ ๋ฌธ์๋ฅผ ๋จผ์ ์ธ์ํ๋ ํ๋ฆฐํฐ๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ์ด ์๋กญ๊ฒ ๊ฐ๋ฐํ ํ๋ฆฐํฐ๋ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ธ์ ์์ ์ ์ํํฉ๋๋ค.
1. ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ์์ ์๋ ๋ฌธ์(J)๋ฅผ ๋๊ธฐ๋ชฉ๋ก์์ ๊บผ๋ ๋๋ค. 2. ๋๋จธ์ง ์ธ์ ๋๊ธฐ๋ชฉ๋ก์์ J๋ณด๋ค ์ค์๋๊ฐ ๋์ ๋ฌธ์๊ฐ ํ ๊ฐ๋ผ๋ ์กด์ฌํ๋ฉด J๋ฅผ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ฃ์ต๋๋ค. 3. ๊ทธ๋ ์ง ์์ผ๋ฉด J๋ฅผ ์ธ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, 4๊ฐ์ ๋ฌธ์(A, B, C, D)๊ฐ ์์๋๋ก ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ ์๊ณ ์ค์๋๊ฐ 2 1 3 2 ๋ผ๋ฉด C D A B ์์ผ๋ก ์ธ์ํ๊ฒ ๋ฉ๋๋ค.
๋ด๊ฐ ์ธ์๋ฅผ ์์ฒญํ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ธ์๋๋์ง ์๊ณ ์ถ์ต๋๋ค. ์์ ์์์ C๋ 1๋ฒ์งธ๋ก, A๋ 3๋ฒ์งธ๋ก ์ธ์๋ฉ๋๋ค.
ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์ ์๋ ๋ฌธ์์ ์ค์๋๊ฐ ์์๋๋ก ๋ด๊ธด ๋ฐฐ์ด priorities์ ๋ด๊ฐ ์ธ์๋ฅผ ์์ฒญํ ๋ฌธ์๊ฐ ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์ ์ด๋ค ์์น์ ์๋์ง๋ฅผ ์๋ ค์ฃผ๋ location์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ด๊ฐ ์ธ์๋ฅผ ์์ฒญํ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ธ์๋๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์๋ 1๊ฐ ์ด์ 100๊ฐ ์ดํ์ ๋ฌธ์๊ฐ ์์ต๋๋ค.
- ์ธ์ ์์ ์ ์ค์๋๋ 1~9๋ก ํํํ๋ฉฐ ์ซ์๊ฐ ํด์๋ก ์ค์ํ๋ค๋ ๋ป์ ๋๋ค.
- location์ 0 ์ด์ (ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์ ์๋ ์์ ์ - 1) ์ดํ์ ๊ฐ์ ๊ฐ์ง๋ฉฐ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ์์ ์์ผ๋ฉด 0, ๋ ๋ฒ์งธ์ ์์ผ๋ฉด 1๋ก ํํํฉ๋๋ค.
์ ์ถ๋ ฅ ์
priorities location return [2, 1, 3, 2] 2 1 [1, 1, 9, 1, 1, 1] 0 5 ์ ์ถ๋ ฅ ์ ์ค๋ช
์์ #1
๋ฌธ์ ์ ๋์จ ์์ ๊ฐ์ต๋๋ค.
์์ #2
6๊ฐ์ ๋ฌธ์(A, B, C, D, E, F)๊ฐ ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ ์๊ณ ์ค์๋๊ฐ 1 1 9 1 1 1 ์ด๋ฏ๋ก C D E F A B ์์ผ๋ก ์ธ์ํฉ๋๋ค.
#include <string> #include <vector> #include <iostream> #include <algorithm> #include <utility> using namespace std; int solution(vector<int> priorities, int location) { int answer = 1; vector<pair<int, int>> stack; vector<pair<int, int>>::iterator iter; vector<int> priority; for (int i = 0; i < priorities.size(); i++) { stack.push_back(make_pair(priorities[i], i)); priority.push_back(priorities[i]); } sort(priority.begin(), priority.end()); while (!stack.empty()) { pair<int, int> temp; temp = stack.front(); stack.erase(stack.begin()); if (temp.first == priority.back()) { if (location == temp.second) return answer; priority.pop_back(); answer++; } else stack.push_back(temp); } return answer; } int main() { vector<int> priorities = { 3, 3, 4, 2 }; int ans; ans = solution(priorities, 3); cout << ans << endl; /*for(int i=0;i<ans.size(); i++) cout << ans[i] << endl;*/ }
728x90'์ฝ๋ฉํ ์คํธ > ์ฝ๋ฉํ ์คํธ ์ฐ์ต' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] ์ ์ ์ ๋ ฌํ๊ธฐ (0) 2020.02.06 [C++] ๊ฒฝ์ฐ์ ์ (0) 2020.01.25 [C++] ๊ฐ์ฅ ํฐ ์ (0) 2019.09.21 [C++] K๋ฒ์งธ์ (0) 2019.09.21 [C++] ๋ฒ ์คํธ์จ๋ฒ (0) 2019.09.21