์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 42840] ๋ชจ์˜๊ณ ์‚ฌ (Javascript)

์€์ง„ 2021. 6. 18. 15:09

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป๋ฌธ์ œ๋งํฌ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 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;
}