๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โŒจ๏ธ Language/swift

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ์นด๋“œ ๋ญ‰์น˜

by hyebin (Helia) 2023. 3. 18.
๋ฐ˜์‘ํ˜•
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋ชจ์Œ

์นด๋“œ ๋ญ‰์น˜

๋ฌธ์ œ ์„ค๋ช…

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

  • ์›ํ•˜๋Š” ์นด๋“œ ๋ญ‰์น˜์—์„œ ์นด๋“œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ์žฅ์”ฉ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•œ ์นด๋“œ๋Š” ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ์นด๋“œ๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ์กด์— ์ฃผ์–ด์ง„ ์นด๋“œ ๋ญ‰์น˜์˜ ๋‹จ์–ด ์ˆœ์„œ๋Š” ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ฒซ ๋ฒˆ์งธ ์นด๋“œ ๋ญ‰์น˜์— ์ˆœ์„œ๋Œ€๋กœ ["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์˜ ๋ฌธ์ž์—ด๋“ค์€ ๋ชจ๋‘ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

 cards1 cards2 goal result
["i", "drink", "water"] ["want", "to"] ["i", "want", "to", "drink", "water"] "Yes"
["i", "water", "drink"] ["want", "to"] ["i", "want", "to", "drink", "water"] "No"

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ณธ๋ฌธ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • cards1์—์„œ "i"๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  cards2์—์„œ "want"์™€ "to"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "i want to"๊นŒ์ง€๋Š” ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ "water"๊ฐ€ "drink"๋ณด๋‹ค ๋จผ์ € ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ฌธ์žฅ์„ ์™„์„ฑ์‹œํ‚ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "No"๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ œ์ถœ

import Foundation

func solution(_ cards1:[String], _ cards2:[String], _ goal:[String]) -> String {
    var cards1 = cards1, cards2 = cards2

    for s in goal{
        if !cards1.isEmpty && cards1[0] == s {
            cards1.removeFirst()
        }else if !cards2.isEmpty && cards2[0] == s {
            cards2.removeFirst()
        }else{
            return "No"
        }
    }
    return "Yes"
}
cards1, cards2๋ฅผ ๋ณ€์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
goal์˜ ์š”์†Œ๋ฅผ s์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•œ๋‹ค.
๋งŒ์•ฝ card1์ด ๋น„์–ด์žˆ์ง€ ์•Š๊ณ , card1์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ s์™€ ๊ฐ™๋‹ค๋ฉด card1์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
๋˜๋Š” card2๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š๊ณ , card2์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ s์™€ ๊ฐ™๋‹ค๋ฉด card2์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฉด, ํ•ด๋‹น ๋ฌธ์žฅ์„ ์™„์„ฑ์‹œํ‚ฌ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— "No"๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

for๋ฌธ์„ ๋ฌด์‚ฌํžˆ ์ข…๋ฃŒํ–ˆ๋‹ค๋ฉด "Yes"๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 
๋ฐ˜์‘ํ˜•