๐ฉ๐ป๐ป๋ฌธ์ ๋งํฌ
[ํ๋ก๊ทธ๋๋จธ์ค 42840] ๋ชจ์๊ณ ์ฌ (Javascript)
๋ฌธ์ ์ค๋ช
์ํฌ์๋ ์ํ์ ํฌ๊ธฐํ ์ฌ๋์ ์ค๋ง์
๋๋ค. ์ํฌ์ ์ผ์ธ๋ฐฉ์ ๋ชจ์๊ณ ์ฌ์ ์ํ ๋ฌธ์ ๋ฅผ ์ ๋ถ ์ฐ์ผ๋ ค ํฉ๋๋ค. ์ํฌ์๋ 1๋ฒ ๋ฌธ์ ๋ถํฐ ๋ง์ง๋ง ๋ฌธ์ ๊น์ง ๋ค์๊ณผ ๊ฐ์ด ์ฐ์ต๋๋ค.
1๋ฒ ์ํฌ์๊ฐ ์ฐ๋ ๋ฐฉ์: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, …
2๋ฒ ์ํฌ์๊ฐ ์ฐ๋ ๋ฐฉ์: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, …
3๋ฒ ์ํฌ์๊ฐ ์ฐ๋ ๋ฐฉ์: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, …
1๋ฒ ๋ฌธ์ ๋ถํฐ ๋ง์ง๋ง ๋ฌธ์ ๊น์ง์ ์ ๋ต์ด ์์๋๋ก ๋ค์ ๋ฐฐ์ด answers๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๋ง์ ๋ฌธ์ ๋ฅผ ๋งํ ์ฌ๋์ด ๋๊ตฌ์ธ์ง ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์กฐ๊ฑด
์ํ์ ์ต๋ 10,000 ๋ฌธ์ ๋ก ๊ตฌ์ฑ๋์ด์์ต๋๋ค.
๋ฌธ์ ์ ์ ๋ต์ 1, 2, 3, 4, 5์ค ํ๋์
๋๋ค.
๊ฐ์ฅ ๋์ ์ ์๋ฅผ ๋ฐ์ ์ฌ๋์ด ์ฌ๋ฟ์ผ ๊ฒฝ์ฐ, returnํ๋ ๊ฐ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
์
์ถ๋ ฅ ์
answers return
[1,2,3,4,5] [1]
[1,3,2,4,2] [1,2,3]
์
์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
์ํฌ์ 1์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๋งํ์ต๋๋ค.
์ํฌ์ 2๋ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํ๋ ธ์ต๋๋ค.
์ํฌ์ 3์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํ๋ ธ์ต๋๋ค.
๋ฐ๋ผ์ ๊ฐ์ฅ ๋ฌธ์ ๋ฅผ ๋ง์ด ๋งํ ์ฌ๋์ ์ํฌ์ 1์
๋๋ค.
์ ์ถ๋ ฅ ์ #2
๋ชจ๋ ์ฌ๋์ด 2๋ฌธ์ ์ฉ์ ๋ง์ท์ต๋๋ค.
โ๏ธIdea Sketch
2021-06-18
1. ๋ฑ์ฅ์ธ๋ฌผ์ 1, 2, 3 ์ํฌ์์ด๋ฉฐ, ์ฐ๋ ๋ฐฉ์์ ์ ํด์ ธ์์
- 1๋ฒ : 1, 2, 3, 4, 5 ๋ฐ๋ณต
- 2๋ฒ : 2, 1, 2, 3, 2, 4, 2, 5 ๋ฐ๋ณต
- 3๋ฒ : 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 ๋ฐ๋ณต
2. ๊ฐ์ฅ ๋ง์ด ๋ง์ถ ๋ฑ์ฅ์ธ๋ฌผ์ return (์ค๋ณตo)
3. ์ฐ์ฐ
for (let i=0; i<answer.length; i++) {
if (answer[i] === arr1[i]) ...
else if (answer[i] === arr2[i]) ...
else if (answer[i] === arr3[i]) ...
}
4. ์ฐ๋ ๋ฐฉ์์ด ๋ฐ๋ณต๋๋ ๊ฒ์ ์ด๋ป๊ฒ ๊ตฌํํ์ง?? --> i > arr1.length ์ผ ๊ฒฝ์ฐ
- ์ฌ๋ผ์ด๋ฉ์๋์ฐ ๋์ --> let math1 = 0 --> math1++ --> math1 = math1+1 === arr1.length ? 0 : math1++;
5. ์ฐ์ฐ ์์ . arr.forEach() ์ฌ์ฉ
answer.forEach(x => {
if (x === arr1[i])
else if (x === arr2[j])
else if (x === arr3[k])
})
6. ํ์ํ ๋ณ์ ๋ฐ ๋ฐฐ์ด
- ์ฐ๋ ๋ฐฉ๋ฒ ๋ฐฐ์ด 3๊ฐ --> arr1, arr2, arr3
- ์ฐ๋ ๋ฐฉ๋ฒ ๋ฐฐ์ด์ ์ธ๋ฑ์ค 3๊ฐ --> i, j, k
- ๋ง์ถ ๊ฐ์ ๋ณ์ 3๊ฐ --> cnt1, cnt2, cnt3
7. cnt ์ค max๋ฅผ ๊ตฌํ ๋ค --> return [1, 2, 3].filter(cnt๊ฐ max์ธ ๊ฒฝ์ฐ ๋ฐํ)
โ๏ธ์์ค์ฝ๋
2021-06-18 ์ ํ์ฑ ์ฑ๊ณต
function solution(answers) {
let arr1 = [1, 2, 3, 4, 5], arr2 = [2, 1, 2, 3, 2, 4, 2, 5], arr3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
let i=0, j=0, k=0;
let cnt = [0, 0, 0];
answers.forEach(x => {
if (x === arr1[i]) cnt[0]++;
if (x === arr2[j]) cnt[1]++;
if (x === arr3[k]) cnt[2]++;
i = i+1 === arr1.length ? 0 : ++i; // ์ธ๋ฑ์ค๊ฐ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋์ด์ค ๋
j = j+1 === arr2.length ? 0 : ++j;
k = k+1 === arr3.length ? 0 : ++k;
})
let max = Math.max(...cnt);
return [1, 2, 3].filter((v, i) => {
if (cnt[i] === max) return v;
})
}
โ๏ธ๋ช ๋ต
์ธ๋ฑ์ค๊ฐ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋์ด์ค ๋ index%arr.length ๋ก ๊ฐ๋จํ!!
arr.filter() ์ arr.length ์ ์กฐํ
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;
}