ํฐ์คํ ๋ฆฌ ๋ทฐ
[ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ]์ฐ์ ๋ถ๋ถ ์์ด(1)
choi95 2021. 7. 3. 14:05๋ฌธ์
N๊ฐ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์ฃผ์ด์ง๋๋ค.์ด ์์ด์์ ์ฐ์๋ถ๋ถ์์ด์ ํฉ์ด ํน์ ์ซ์ M์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ช ๋ฒ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.๋ง์ฝ N=8, M=6์ด๊ณ ์์ด์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด
1 2 1 3 1 1 1 2
ํฉ์ด 6์ด ๋๋ ์ฐ์๋ถ๋ถ์์ด์ {2,1,3},{1,3,1,1},{3,1,1,1}๋ก ์ด 3๊ฐ์ง ์ ๋๋ค.
๋ฌธ์ ํ์ด
ํด๋น ๋ฐฐ์ด์์ ์ฐ์๋ถ๋ถ์์ด์ ํฉ์ ๊ตฌํ๊ธฐ ์ํด์๋ ๋ ๊ฐ์ ์ธ๋ฑ์ค๊ฐ ํฌ์ธํฐ๋ก์ ์ํ ๋ฐ ์ฐธ์กฐํด์ผ ํ๊ธฐ ๋๋ฌธ์์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์๋ค.
์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ ์ํ๋ ์ฐ์๋ถ๋ถ์์ด์์์ ์ฒซ ๋ฒ์งธ๋ก ๊ธฐ์ค์ด ๋๋ ์์๋ฅผ ์ฐธ์กฐํด์ผ ํ๋ค.์ด๋ ์ฐ์๋ถ๋ถ์์ด์ ํฉ์ ๊ตฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฒซ ๋ฒ์งธ ๊ธฐ์ค์ด ๋๋ ์์๋ ์ต์ด์ ํฉ์ฐ์ด ๋๋๋ฉด ๊ทธ ๋ค์ ์ธ๋ฑ์ค ์์๋ฅผ ์ฐธ์กฐํด์ผ ํ๋ค.
๋ ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ ์ํ์์๋ ์ฒซ ๋ฒ์งธ ๊ธฐ์ค์ด ๋๋ ์์์์๋ถํฐ ํฉ์ด 6์ด ๋ ๋๊น์ง ๊ฐ ์์๋ค์ ์ฐธ์กฐ ๋ฐ ํฉ์ฐํด์ผ ํ๋ค.
์ฒซ ๋ฒ์งธ ๊ธฐ์ค์ด ๋๋ ์์์์ ์ฐ์๋ถ๋ถ์์ด์ ํฉ์ด ๋์ค์ง ์๋๋ค๋ฉด ๊ธฐ์ค์ด ๋๋ ์์๋ ๊ทธ ๋ค์์ผ๋ก ๋์ด๊ฐ๊ฒ ๋๊ณ ํด๋น ์ธ๋ฑ์ค
์์๋ฅผ ์์์ผ๋ก ์ฐ์๋ถ๋ถ์์ด์ ํฉ์ด 6์ด ๋์ค๋์ง ์๋ณํด์ผ ํ๋ค.
์ด๋ฅผ ์ํด ์ด์ ์ธ๋ฑ์ค ์์(์ด์ ๊ธฐ์ค ์ธ๋ฑ์ค ์์)๋ ์ฐ์ฐ์์ ์ ์ธํ๊ธฐ ์ํด ์ด๊ธฐ๊ฐ์ (i+1)-1 ์ผ๋ก ํ ๋นํ์ฌ ์ฃผ์๋ค.
(์ด๊ธฐ๊ฐ์ i+1 ์ผ๋ก ํ ๊ฒฝ์ฐ์ i=0์ผ ๊ฒฝ์ฐ ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ ๋ด์์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค ์์๋ฅผ ์ฐธ์กฐํ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค)
์ฝ๋
function solution(arr) {
let answer = 0;
for(let i = 0; i < arr.length; i++) {
let sum = 0;
for(let j = (i+1)-1; j < arr.length; j++) {
sum += arr[j];
if(sum === 6) {
answer++;
break;
}
if(sum > 6) {
break;
}
}
}
return answer;
}
let arr = [1, 2, 1, 3, 1, 1, 1, 2]
console.log(solution(arr));
๋ฌธ์ ํ์ด2
ํฌํฌ์ธํฐ ์ญํ ์ ํ lt์ rt๋ฅผ ์ด์ฉํ์ฌ ์ฐ์๋ถ๋ถ์์ด์ ํฉ์ ๊ตฌํ๊ณ ์ ํ๋ค.lt์ rt๊ฐ ๊ฐ๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ์ธ๋ฑ์ค ์์ ์ฌ์ด์ ํฉ์ฐ์ ํตํด์ ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ ๊ตฌํ ์ ์๋ค.
์ฐ์๋ถ๋ถ์์ด์ ํฉ n์ ๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ(n๋ณด๋ค ์์ ๋๊น์ง)์๋ ํฌ์ธํฐ lt๋ ๋ค์ ์ธ๋ฑ์ค๋ฅผ ์ฐธ์กฐํ์ง ์๊ณ ๊ทธ๋๋ก ๋ ์ฑ, ํฌ์ธํฐ rt๋ง์ ๋ค์ ์ธ๋ฑ์ค ์์๋ฅผ ์ฐธ์กฐํ๊ฒ๋ ์ด๋์์ผ ์ค๋ค.๋ฐ๋๋ก ์ฐ์๋ถ๋ถ์์ด์ ํฉ n์ ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ์์ ๊ฒฝ์ฐ์๋ n๋ณด๋ค ๊ทธ ๊ฐ์ด ์์์ง ๋๊น์ง ํฌ์ธํฐ rt๋ ๊ทธ๋๋ก ๋ ์ฑ, ํฌ์ธํฐ lt๋ง์ ๋ค์ ์ธ๋ฑ์ค ์์๋ฅผ ์ฐธ์กฐํ๊ฒ๋ ์ด๋์์ผ ์ค๋ค.
์ด๋ ํฌ์ธํฐ rt์ ๊ฐ์ ๊ฒฝ์ฐ๋, ์ธ๋ฑ์ค ์์ ์ฌ์ด์ ํฉ์ฐํ ๊ฐ์๋ ๋ค์์ ์ฐธ์กฐ๋ ์ธ๋ฑ์ค ์์๊น์ง ํฌํจ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ํฌ์ธํฐ๋ค์์ผ๋ก ์ด๋ํ ํ์ ํฉ์ฐ ์ฐ์ฐ์ ํ๋ค.๋ฐ๋๋ก ํฌ์ธํฐ lt์ ๊ฐ์ ๊ฒฝ์ฐ๋, ์ธ๋ฑ์ค ์์ ์ฌ์ด์ ํฉ์ฐํ ๊ฐ์๋ ์ด์ ์ ์ฐธ์กฐ๋ฌ๋ ์ธ๋ฑ์ค ์์๋ ๋ฐฐ์ ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ํฌ์ธํฐ๊ฐ ๋ค์์ผ๋ก ์ด๋ํ๊ธฐ ์ ์ ๊ฐ์ฐ ์ฐ์ฐ์ ํ๋ค.
ํฌ์ธํฐ lt๋ฅผ ์ด๋์ํค๋ rt๋ฅผ ์ด๋์ํค๋ ๊ฐ์, ํฌ์ธํฐ์ ์ด๋ ํ n์ ๊ฐ์ด 6์ด ๋ ๊ฒฝ์ฐ์๋ answer๋ฅผ ์ฆ๊ฐ์์ผ ์ค๋ค.
์ฝ๋
function solution(arr) {
let answer = 0;
let lt = 0;
let rt = 1;
let sum = arr[lt] + arr[rt];
while(rt < arr.length) {
if(sum < 6) {
sum += arr[++rt];
if(sum === 6) answer++
}
if(sum >= 6) {
sum -= arr[lt++];
if(sum === 6) answer++;
}
}
return answer;
}
let arr = [1, 2, 1, 3, 1, 1, 1, 2]
console.log(solution(arr));
function solution(arr) {
let answer = 0;
let lt = 0;
let sum = 0;
for (let rt = 0; rt < arr.length; rt++) {
sum += arr[rt];
if (sum === 6) answer++;
while (sum >= 6) {
sum -= arr[lt++];
if (sum === 6) answer++;
}
}
return answer;
}
let arr = [1, 2, 1, 3, 1, 1, 1, 2];
console.log(solution(arr));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฌ๋ผ์ด๋ฉ ์๋์ฐ]์ต๋ ๋งค์ถ (0) | 2021.07.06 |
---|---|
[ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ] ์ฐ์ ๋ถ๋ถ ์์ด(2) (0) | 2021.07.05 |
[ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ]๊ณตํต์์ ๊ตฌํ๊ธฐ (0) | 2021.07.02 |
[ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ]๋ ๋ฐฐ์ด ํฉ์น๊ธฐ (0) | 2021.07.02 |
[์์ ํ์]k๋ฒ์งธ ํฐ ์ (0) | 2021.07.01 |