<๋ฌธ์ ์ถ์ฒ>
https://school.programmers.co.kr/learn/courses/30/lessons/42840
<๋์ ํ์ด>
function solution(answers) {
const a = [1, 2, 3, 4, 5];
const b = [2, 1, 2, 3, 2, 4, 2, 5];
const c = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
const checkFn = (pattern, answers) => {
let test = [...answers];
const checkCount = test.reduce((acc, cur, ind) => {
if (ind < pattern.length) {
return cur === pattern[ind] ? acc + 1 : acc;
}
else {
if (cur) {
return cur === pattern[ind % pattern.length] ? acc + 1 : acc;
} else {
test.slice(1);
return acc;
}
}
}, 0)
return checkCount;
}
const aR = checkFn(a, answers);
const bR = checkFn(b, answers);
const cR = checkFn(c, answers);
const max = Math.max(aR, bR, cR);
let result = [];
[aR, bR, cR].map((v, i) => v === max && result.push(i + 1));
return result;
}
์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํ์๋ค.
checkFn์ ๋ฌธ์ ์ ๊ธธ์ด์ ํจํด์ ๊ธธ์ด์ ๋ฐ๋ผ ๋ง์ถ ๋ฌธ์ ์ ๊ฐ์๋ฅผ return ํด์ค๋ค.
reduce ๋ฅผ ์งํํ๋ค๊ฐ ๋ฌธ์ ์ ์๊ฐ ํจํด๋ณด๋ค ์์ผ๋ฉด reduce ๋ฅผ break ํด์ค๋ค.
๋ฐ์ ๋ฌธ์ ๊ฐ์๋ค์ ๋น๊ตํด์,
๊ฐ์ฅ ๋ง์ด ๋ง์ถ ์ฌ๋๊ณผ ๋ง์ถ ๋ฌธ์ ์ ์๊ฐ ๊ฐ๋ค๋ฉด result ๋ฐฐ์ด์ index+1 ์ ํด์ค๋ค. (๊ทธ๋ผ 1, 2, 3 ๋ฒ์ด ๋ค์ด๊ฐ.)
์ต๋ 10,000 ๋ฌธ์ ๊ฐ ์ฃผ์ด์ง๋ค๋ ์ ํ ์กฐ๊ฑด์ด ์๋๋ฐ,
๋ฒ์๊ฐ ํฐ๊ฑฐ์ ๋นํด ์๋๊ฐ ๊ด์ฐฎ์ ๊ฒ ๊ฐ๋ค~~
<๋ค๋ฅธ ์ฌ๋์ ํ์ด>
๋ค๋ฅธ ์ฌ๋ ํ์ด ๋ณด๋ ์ ๋ง ๊น๋ํ๊ฒ ํ์๋ค!
๋ด๊บผ ๋ค์ ๋ณด๋ ์ ๋ฆฌ๊ฐ ์๋ ๋๋์ด์ง๋ง ๊ทธ๋๋ 1์๊ฐ ๋ด์ ํ์๋ค๋ ๊ฒ์ ์์๋ฅผ,,
function solution(answers) {
var answer = [];
var a1 = [1, 2, 3, 4, 5];
var a2 = [2, 1, 2, 3, 2, 4, 2, 5]
var a3 = [ 3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
var a1c = answers.filter((a,i)=> a === a1[i%a1.length]).length;
var a2c = answers.filter((a,i)=> a === a2[i%a2.length]).length;
var a3c = answers.filter((a,i)=> a === a3[i%a3.length]).length;
var max = Math.max(a1c,a2c,a3c);
if (a1c === max) {answer.push(1)};
if (a2c === max) {answer.push(2)};
if (a3c === max) {answer.push(3)};
return answer;
}
reduce ๋์ ๋ง์ถ ๊ฑธ filter ํด์ length ๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ...!!
ํจ์ฌ ๊น๋ํ์ง๋ง,
๋ง์ฝ ์ํฌ์๊ฐ ๋ง์์ง๋ฉด ๊ทธ๋งํผ ์ฝ๋๊ฐ ๊ธธ์ด์ง๋๊น answers.filter ๋ถ๋ถ์ ์ฌ๊ทํจ์๋ก ๋ง๋ค์ด๋ ์ข์ ๋ฏ ํ๋ค.
์์ข๋ค๋ ์ฌ๋ก ๋ ์๋ค..!
max ๋ฅผ array ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ด๊บผ๋ ๊ฐ์์ ๊ดํ ๊ธฐ๋ถ์ด ์ข๋ค.
์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๋ ํ๋ฉด ํ ์๋ก ์ฐธ ์ด๋ ค์ด๋ฐ ๋ ์ฌ๋ฐ๊ธฐ๋ ํ๊ณ ..
๊ทผ๋ฐ ๋ ์๊ฐํ ๊ฒ ๋ง์์ ์ด๋ ต๊ณ .. ๊ทธ๋ ๋ค..!
'ํ์ ๊ณต๋ถ > ๐ซง ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌธ์์ด ๋ฌถ๊ธฐ (0) | 2023.06.22 |
---|---|
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์ปคํผ ์ฌ๋ถ๋ฆ (0) | 2023.06.22 |
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ๊ณผ์ผ ์ฅ์ (0) | 2023.06.20 |
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] 2016๋ / reduce break (0) | 2023.06.14 |
[์๊ณ ๋ฆฌ์ฆ || ํ๋ก๊ทธ๋๋จธ์ค] ์ฝ๋ผ๋ฌธ์ (0) | 2023.06.13 |