๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm

[Algorithm] ์นด๋“œ ๋ญ‰์น˜

๐Ÿ“‹ ๋ฌธ์ œ

์ฝ”๋‹ˆ๋Š” ์˜์–ด ๋‹จ์–ด๊ฐ€ ์ ํžŒ ์นด๋“œ ๋ญ‰์น˜ ๋‘ ๊ฐœ๋ฅผ ์„ ๋ฌผ๋กœ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ฝ”๋‹ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ์นด๋“œ์— ์ ํžŒ ๋‹จ์–ด๋“ค์„ ์‚ฌ์šฉํ•ด ์›ํ•˜๋Š” ์ˆœ์„œ์˜ ๋‹จ์–ด ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์›ํ•˜๋Š” ์นด๋“œ ๋ญ‰์น˜์—์„œ ์นด๋“œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ์žฅ์”ฉ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•œ ์นด๋“œ๋Š” ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ์นด๋“œ๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๊ธฐ์กด์— ์ฃผ์–ด์ง„ ์นด๋“œ ๋ญ‰์น˜์˜ ๋‹จ์–ด ์ˆœ์„œ๋Š” ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์ฒซ ๋ฒˆ์งธ ์นด๋“œ ๋ญ‰์น˜์— ์ˆœ์„œ๋Œ€๋กœ ["i", "drink", "water"], ๋‘ ๋ฒˆ์งธ ์นด๋“œ ๋ญ‰์น˜์— ์ˆœ์„œ๋Œ€๋กœ ["want", "to"]๊ฐ€ ์ ํ˜€์žˆ์„ ๋•Œ ["i", "want", "to", "drink", "water"] ์ˆœ์„œ์˜ ๋‹จ์–ด ๋ฐฐ์—ด์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ์ฒซ ๋ฒˆ์งธ ์นด๋“œ ๋ญ‰์น˜์—์„œ "i"๋ฅผ ์‚ฌ์šฉํ•œ ํ›„ ๋‘ ๋ฒˆ์งธ ์นด๋“œ ๋ญ‰์น˜์—์„œ "want"์™€ "to"๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ฒซ ๋ฒˆ์งธ ์นด๋“œ๋ญ‰์น˜์— "drink"์™€ "water"๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์›ํ•˜๋Š” ์ˆœ์„œ์˜ ๋‹จ์–ด ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด cards1, cards2์™€ ์›ํ•˜๋Š” ๋‹จ์–ด ๋ฐฐ์—ด goal์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, cards1๊ณผ cards2์— ์ ํžŒ ๋‹จ์–ด๋“ค๋กœ goal๋ฅผ ๋งŒ๋“ค ์žˆ๋‹ค๋ฉด "Yes"๋ฅผ, ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค๋ฉด "No"๋ฅผ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

1 ≤ cards1์˜ ๊ธธ์ด, cards2์˜ ๊ธธ์ด ≤ 10
1 ≤ cards1[i]์˜ ๊ธธ์ด, cards2[i]์˜ ๊ธธ์ด ≤ 10
cards1๊ณผ cards2์—๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋‹จ์–ด๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
2 ≤ goal์˜ ๊ธธ์ด ≤ cards1์˜ ๊ธธ์ด + cards2์˜ ๊ธธ์ด
1 ≤ goal[i]์˜ ๊ธธ์ด ≤ 10
goal์˜ ์›์†Œ๋Š” cards1๊ณผ cards2์˜ ์›์†Œ๋“ค๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
cards1, cards2, goal์˜ ๋ฌธ์ž์—ด๋“ค์€ ๋ชจ๋‘ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ

["i", "drink", "water"] ["want", "to"] ["i", "want", "to", "drink", "water"] "Yes"
["i", "water", "drink"] ["want", "to"] ["i", "want", "to", "drink", "water"] "No"

 

โœ๏ธ ํ’€์ด

๋‘ ๊ฐœ์˜ ์Šคํ…์„ ์‚ฌ์šฉํ•˜๋Š” ๋А๋‚Œ์œผ๋กœ ํ’€์–ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” shift๋ณด๋‹ค pop์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ํ›จ์”ฌ ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ card ๋ฐฐ์—ด์„ ๋’ค์ง‘์—์„œ pop์‹œํ‚ค๋ ค๊ณ  ํ•˜์˜€์œผ๋‚˜ card ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ์ตœ๋Œ€ 10์ด๊ธฐ ๋•Œ๋ฌธ์— shift๋ฅผ ๊ทธ๋ƒฅ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

goal ๋ฐฐ์—ด์„ ๋Œ๋ฉด์„œ ํ˜„์žฌ ํ•„์š”ํ•œ ๋‹จ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€๋ฅผ ํ™•์ธํ–ˆ๋‹ค. ์ด๋•Œ cards1 ๋˜๋Š” cards2์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์™€ ํ˜„์žฌ ํ•„์š”ํ•œ ๋‹จ์–ด์™€ ์ผ์น˜ํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ–ˆ๊ณ  ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ card ๋ฐฐ์—ด์— ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€๋„ ํ™•์ธํ–ˆ๋‹ค. ๋งŒ์•ฝ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋‹จ์–ด๊ฐ€ ์กด์žฌํ•˜๋ฉด shiftํ•˜๊ณ  contuinue ์‹œ์ผœ์คฌ๋‹ค. ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ”๋กœ "No"๋ฅผ ๋ฐ˜ํ™˜ํ•ด์คฌ๋‹ค. ๋ฐ˜๋ณต๋ฌธ์ด ๋ชจ๋‘ ๋Œ๊ณ  ๋‚˜๋ฉด ํ•„์š”ํ•œ ๋‹จ์–ด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ "Yes"๋ฅผ ๋ฐ˜ํ™˜ํ•ด์คฌ๋‹ค.

 

โŒจ๏ธ ์ฝ”๋“œ

function solution(cards1, cards2, goal) {
  for (const target of goal) {
    if (cards1.length && cards1[0] === target) {
      cards1.shift();
      continue;
    } else if (cards2.length && cards2[0] === target) {
      cards2.shift();
      continue;
    }

    return 'No';
  }
  return 'Yes';
}