- Today
- Total
- MST
- ๊ตฌํ
- tree
- ์๋ฐ
- ๋ค์ต์คํธ๋ผ
- CS
- spring
- ๋ฐฑ์๋
- Graph
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์๋ฐ์์ ์
- array
- java
- Algorithm
- ์กธ์ ์ํ
- ๋ฒจ๋งํฌ๋
- OOP
- ๋ฌธ๋ฒ
- leetcode
- ํ๋ก๊ทธ๋๋จธ์ค
- dp
- ์ธํด
- ์์์ ๋ ฌ
- ๋ฐฑ์ค
- BFS
- database
- PS
- pytorch
- ์๋ฃ๊ตฌ์กฐ
- ๊ทธ๋ฆฌ๋
Partially Committed
[Algorithm] Sorted squared array ๋ฐํํ๊ธฐ ๋ณธ๋ฌธ
[Algorithm] Sorted squared array ๋ฐํํ๊ธฐ
WonderJay 2022. 10. 24. 10:22์ค๋์ ๋ณด๋ค ๊ฐ๋จํ ๋ฌธ์ ์ ๋ํด์ ์์๋ณด์. Ascending order ๋ก ์ ๋ ฌ๋ input array ๊ฐ ์ฃผ์ด์ก์ ๋, Sorted Sqaured output array ๋ฅผ ๋ฐํํ๋ผ๋ ๋ฌธ์ ์ํฉ์ด๋ค. ์๋ฅผ ๋ค์ด [1,2,3,4,5] ๊ฐ ์ฃผ์ด์ง๋ฉด [1,4,9,16,25] ๋ฅผ ๋ฐํํ๋ค. ๊ฐ์ฅ ์ฝ๊ฒ ๋ ์ค๋ฅด๋ ๊ฒ์ ๊ทธ๋ฅ input array ๋ฅผ ์ํํ๋ฉฐ squared value ๋ฅผ ์์๋ก ๊ฐ์ง๋ ๋ฐฐ์ด์ ๋ง๋ ๋ค์ sorting ํด์ ๋ฐํํด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ ๊ฒ ๊ตฌํํ ๊ฒฝ์ฐ์๋ ์๊ฐ ๋ณต์ก๋๋ O(NlogN) ์ด๊ณ ๊ณต๊ฐ ๋ณต์ก๋๋ O(N) ์ด๋ค.
#include <vector>
using namespace std;
// time : O(NlogN)
// space : O(N)
vector<int> sortedSquaredArray(vector<int> array) {
// Write your code here.
vector<int> ans;
for(auto ele : array){
ans.push_back(ele*ele);
}
sort(ans.begin(), ans.end());
return ans;
}
๋ง์ฝ, ๋ฉด์ ๊ด ํน์ ๋ฌธ์ ์ํฉ์์ ๋ณด๋ค ์ต์ ํ๋ ํ์ด๋ฅผ ์๊ตฌํ๋ฉด ์ด๋ป๊ฒ ํ๋ฉด ๋ ๊น? ๊ฐ๋ น, ์ด ๋ฌธ์ ๋ฅผ O(N) ์ ํ๋ผ๊ณ ํ๋ค๋ฉด? ์ด๋ฅผ ์ํด์๋ output ์ sorting ํ๋ ๊ณผ์ ์์ด, input array ๋ฅผ ์ํํ๋ฉด์ output array ์ ์ ์ ํ position ์ squared value ๋ฅผ insert ํด์ฃผ๋ฉด ๋๋ค.
์ด๋ฅผ ์ํด์ array ์ ๊ฐ์ฅ ์์ ์์์ ์ธ๋ฑ์ค๋ฅผ ์๋ฏธํ๋ left = 0 ์ ๊ฐ์ฅ ํฐ ์์์ ์ธ๋ฑ์ค๋ฅผ ์๋ฏธํ๋ right = array.size()-1 ์ ์ ์ธํ ๋ค์ array ๋ฅผ ์ํํ๋ฉฐ array[left] ์ array[right] ์ ์ ๋๊ฐ์ ๋น๊ตํ ๋ค ๋ ํฐ ์์์ ์ ๊ณฑ์ output array ์ ๋๋ถํฐ ์ฑ์๋ฃ์ด์ฃผ๋ฉด ๋๋ค. ์ด๋ ๊ฒ ๊ตฌํํ๋ฉด ์๊ฐ ๋ณต์ก๋๋ O(N) ์ด๊ณ ๊ณต๊ฐ ๋ณต์ก๋๋ O(N) ์ผ๋ก ๋ณด๋ค ์ต์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ ์ ์๊ฒ ๋ค.
#include <vector>
using namespace std;
// time : O(N)
// space : O(N)
vector<int> sortedSquaredArray(vector<int> array) {
// Write your code here.
vector<int> ans(array.size());
int right = array.size()-1; int left = 0;
for(int i = array.size()-1; i >= 0 ; i--){
if(abs(array[left]) > abs(array[right])){
ans[i] = array[left]*array[left];
left++;
}
else{
ans[i] = array[right]*array[right];
right--;
}
}
return ans;
}
https://github.com/versatile0010/AlgoExpert
'๐ฅ Algorithm || ๋ฌธ์ ํ์ด > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] Non-Constructible Value (0) | 2022.10.25 |
---|---|
[Algorithm] Tournament Winner (0) | 2022.10.25 |
[Algorithm] Subsequence ํ๋ณํ๊ธฐ (2) | 2022.10.23 |
[Algorithm] ๋ฐฐ์ด ๋ด, ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ ์ ๊ฒ์ํ๊ธฐ (0) | 2022.10.22 |
[LEETCODE] 496. Next Greater Element I (0) | 2022.10.14 |