[ ๋ฌธ์ ๋งํฌ ]
https://school.programmers.co.kr/learn/courses/30/lessons/178870
๐ฉ ์กฐ๊ฑด
- ๋น๋ด๋ฆผ์ฐจ์(=์ค๋ฆ์ฐจ์) ์์ด sequence์ k๊ฐ ์ฃผ์ด์ง๋ฉด, ํฉ์ด k์ธ ๋ถ๋ถ ์์ด์ ์ฐพ์๋ผ
- ๋ถ๋ถ ์์ด ์ค ๊ฐ์ฅ ๊ธธ์ด๊ฐ ์งง์ ๊ฒ์ ์ฐพ๋, ๊ธธ์ด๊ฐ ๊ฐ์ผ๋ฉด ๋จผ์ ๋ฑ์ฅํ๋ ๊ฒ์ ์ฐพ์๋ผ
- 5 ≤ sequence์ ๊ธธ์ด ≤ 1,000,000
- 5 ≤ k ≤ 1,000,000,000 / k๋ ํญ์ ๋ถ๋ถ์์ด์ ํฉ์ผ๋ก ๋์ฌ ์ ์๋ ์ ์
๐ฉ ์ ๊ทผ
for๋ฌธ์ผ๋ก ์ ์์๋ถํฐ ๋ํด๋๊ฐ๋ค๊ฐ ํฉ์ด k๋ณด๋ค ์ปค์ง๋ฉด ์ ์์๋ฅผ ์ ๊ฑฐํด๋๊ฐ๋ฉฐ ๋ต์ ์ฐพ์!
=> ์ด๊ฒ ํฌ ํฌ์ธํฐ์ ๊ฐ๋
๐ฉ ์ํ์ฐฉ์ค
- sum>k ์ผ ๋ ์ ์ผ ์ ์์๋ฅผ ์ ๊ฑฐํ๋๋ฐ, ์ด ๋ sum==k ๊ฐ ๋ ์๋ ์๋ค๋ ์ ์ ๊ฐ๊ณผํจ. ๊ทธ๋์ ์ ๊ฑฐํ ํ sum==k ์ด๋ฉด ๊ธธ์ด๋ฅผ ๋น๊ตํ๊ณ answer์ ์ ๋ฐ์ดํธํ๋ ์ฝ๋๋ฅผ ๋ณต๋ถํจ. (๋นํจ์จ์ ์ด์ง๋ง..)
- ํ ์คํธ 16, 25์์ ์คํจํจ. ์ฒ์์ size๋ฅผ 1,000,000์ผ๋ก ์ด๊ธฐํํ๊ธฐ ๋๋ฌธ... sequence์ ์ต๋ ๊ธธ์ด๊ฐ 1,000,000์ด๋ฏ๋ก ์ ๋ต์ผ๋ก 1,000,000๋ ๊ฐ๋ฅํจ. ๋ฐ๋ผ์ ๋ฐ๋์ ์ ๋ต๋ณด๋ค ํฐ ์์ฌ์ผ ํ๋ size๋ 1,000,000๋ณด๋ค ์ปค์ผ ํจ.
๐ป ์ฝ๋ (C++)
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> sequence, int k) {
vector<int> answer;
int sum=0; int start=0; int end=-1; int size=1000001;
for(int i=0; i<sequence.size(); i++){
sum += sequence[i];
end = i;
if(sum<k){
continue;
}else if(sum>k){
while(sum>k){
sum-=sequence[start];
start++;
}
if(sum==k){
if(end+1-start<size){
answer.clear();
answer.push_back(start);
answer.push_back(end);
size = end+1-start;
}
}
}else{
if(end+1-start<size){
answer.clear();
answer.push_back(start);
answer.push_back(end);
size = end+1-start;
}
}
}
return answer;
}
'๐ป Algorithms > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ต๋๊ฐ๊ณผ ์ต์๊ฐ - ๋ฌธ์์ด ์ฒ๋ฆฌ? (1) | 2024.09.20 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ - ํด์ (0) | 2024.09.20 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ - ์ํ (0) | 2024.08.23 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ค์ ์๋ ํฐ ์ ์ฐพ๊ธฐ - ์คํ (0) | 2024.08.20 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ ์ ์ฌ์ด์ ์ ์ ์ - ์ํ (0) | 2024.08.17 |