2023. 7. 26. 18:14ใStudy_Develop/์๊ณ ๋ฆฌ์ฆ | ์ฝ๋ฉํ ์คํธ
ํ๋ก๊ทธ๋๋จธ์ค - ์ฝ๋ ์ฒ๋ฆฌํ๊ธฐ - js
๋ฌธ์
๋ฌธ์์ด code๊ฐ ์ฃผ์ด์ง๋๋ค.
code๋ฅผ ์์์๋ถํฐ ์ฝ์ผ๋ฉด์ ๋ง์ฝ ๋ฌธ์๊ฐ "1"์ด๋ฉด mode๋ฅผ ๋ฐ๊ฟ๋๋ค. mode์ ๋ฐ๋ผ code๋ฅผ ์ฝ์ด๊ฐ๋ฉด์ ๋ฌธ์์ด ret์ ๋ง๋ค์ด๋
๋๋ค.
mode๋ 0๊ณผ 1์ด ์์ผ๋ฉฐ, idx๋ฅผ 0 ๋ถํฐ code์ ๊ธธ์ด - 1 ๊น์ง 1์ฉ ํค์๋๊ฐ๋ฉด์ code[idx]์ ๊ฐ์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ด ํ๋ํฉ๋๋ค.
mode๊ฐ 0์ผ ๋
code[idx]๊ฐ "1"์ด ์๋๋ฉด idx๊ฐ ์ง์์ผ ๋๋ง ret์ ๋งจ ๋ค์ code[idx]๋ฅผ ์ถ๊ฐํฉ๋๋ค.
code[idx]๊ฐ "1"์ด๋ฉด mode๋ฅผ 0์์ 1๋ก ๋ฐ๊ฟ๋๋ค.
mode๊ฐ 1์ผ ๋
code[idx]๊ฐ "1"์ด ์๋๋ฉด idx๊ฐ ํ์์ผ ๋๋ง ret์ ๋งจ ๋ค์ code[idx]๋ฅผ ์ถ๊ฐํฉ๋๋ค.
code[idx]๊ฐ "1"์ด๋ฉด mode๋ฅผ 1์์ 0์ผ๋ก ๋ฐ๊ฟ๋๋ค.
๋ฌธ์์ด code๋ฅผ ํตํด ๋ง๋ค์ด์ง ๋ฌธ์์ด ret๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๋จ, ์์ํ ๋ mode๋ 0์ด๋ฉฐ, return ํ๋ ค๋ ret๊ฐ ๋ง์ฝ ๋น ๋ฌธ์์ด์ด๋ผ๋ฉด ๋์ "EMPTY"๋ฅผ return ํฉ๋๋ค.
์ ํ์ฌํญ
1 ≤ code์ ๊ธธ์ด ≤ 100,000
code๋ ์ํ๋ฒณ ์๋ฌธ์ ๋๋ "1"๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์
๋๋ค.
์ ์ถ๋ ฅ ์
code | result |
"abc1abc1abc" | "acbac" |
solution.js
function solution(code) {
let mode = 0
return [...code].reduce((a, b, idx) => {
if(mode) {
if(b !== '1' && idx%2 === 1) return a+b
if(b === '1') mode = 0
} else {
if(b !== '1' && idx%2 === 0) return a+b
if(b === '1') mode = 1
}
return a
}, "") || "EMPTY"
}
- solution(code) ๋ ๋ฌธ์์ด code๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ๋๋ค.
- mode๋ณ์๋ ํ์ฌ ์ฒ๋ฆฌ ๋ชจ๋๋ฅผ ๋ํ๋ด๋ ๋ณ์๋ก, 0๊ณผ 1 ๋ ๊ฐ์ง ๊ฐ์ค ํ๋๋ฅผ ๊ฐ์ง๋ค.
- return [...code].reduce((a, b, idx) => {...} : ๋ฌธ์์ด code๋ฅผ ๋ฐฐ์ด๋ก ๋ณํํ ๋ค reduce ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๋ฌธ์๋ฅผ ์ํํ๋ฉด์ ์๋ก์ด ๋ฌธ์์ด์ ์์ฑํ๋ค.
- if(mode) {...} else {...} : ํ์ฌ ์ฒ๋ฆฌ ๋ชจ๋์ ๋ฐ๋ผ ๋๊ฐ์ง ๊ฒฝ์ฐ๋ก ๋ถ๊ธฐ๋๋ค.
- else๋ชจ๋ (0๋ชจ๋)์์
if (cur !== '1 ' && idx % 2 === 0) return a+ b: ํ์ฌ ๋ฌธ์๊ฐ 1์ด ์๋๊ณ , ์ธ๋ฑ์ค๊ฐ ์ง์์ธ ๊ฒฝ์ฐ, ๊ฒฐ๊ณผ ๋ฌธ์์ด์ ํ์ฌ ๋ฌธ์๋ฅผ ์ถ๊ฐํ๋ค.
if (b=== '1 ') mode = 1: ํ์ฌ ๋ฌธ์๊ฐ 1์ธ ๊ฒฝ์ฐ, ๋ชจ๋๋ฅผ 1๋ก ๋ณ๊ฒฝํ์ฌ ๋ค์ ๋ฌธ์์ด์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ค.
- return a: ๋ชจ๋ ๋ฌธ์์ด์ ์ฒ๋ฆฌํ ํ, ๊ฒฐ๊ณผ ๋ฌธ์์ด์ ๋ฐํํ๋ค.
- ""||"EMPTY" : ๋ง์ฝ ๊ฒฐ๊ณผ ๋ฌธ์์ด์ด ๋น ๋ฌธ์์ด์ด๋ฉด ๋์ "EMPTY"๋ฌธ์์ด์ ๋ฐํํ๋ค.
reduce () ํจ์?
arr.reduce(callback[, initialValue])
- ์๋ฐ์คํฌ๋ฆฝํธ์ reduceํจ์๋ ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ์ํํ๋ฉฐ callbackํจ์์ ์คํ ๊ฐ์ ๋์ ํ์ฌ ํ๋์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํ ํ๋ค.
์์ 1. ๋ฐฐ์ด์ ๋ชจ๋ ๊ฐ (1๋ถํฐ 10๊น์ง ) ๋ํ๊ธฐ
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const sum1 = numbers.reduce((accumulator, currentNumber) => accumulator + currentNumber);
console.log('sum1 =', sum1);
'Study_Develop > ์๊ณ ๋ฆฌ์ฆ | ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ์ฃผ์ฌ์ ๊ฒ์ 2 - js (0) | 2023.07.26 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ๋ฑ์ฐจ์์ด์ ํน์ ํ ํญ๋ง ๋ํ๊ธฐ - js (reduce ํจ์ ์ด๊ธฐ๊ฐ?) (0) | 2023.07.26 |
ํ๋ก๊ทธ๋๋จธ์ค - ๋ฌธ์์ด์ ์ ์๋ก ๋ณํํ๊ธฐ - js (0) | 2023.07.25 |
ํ๋ก๊ทธ๋๋จธ์ค - flag์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ ๋ฐํํ๊ธฐ - js (0) | 2023.07.25 |
ํ๋ก๊ทธ๋๋จธ์ค - ์กฐ๊ฑด ๋ฌธ์์ด - js (0) | 2023.07.25 |