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

[์ฝ”๋“œํŠธ๋ฆฌ ์ฑŒ๋ฆฐ์ง€] 6์ฃผ์ฐจ - ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰

by hyebin (Helia) 2023. 10. 16.
๋ฐ˜์‘ํ˜•

์ง€๋‚œ๋ฒˆ ๋ณด๋‹ค ๋–จ์–ด์ง„ ์ด๋ฒˆ ์‹ค๋ ฅ ์ฒดํฌ...ใ…œใ…œ ๋‹ค์Œ์— ๋” ์—ด์‹ฌํžˆ ํ•ด์•ผ๊ฒ ๋‹ค.,...  

 

https://www.codetree.ai/cote/14/problems/move-in-direction/

 

์ฝ”๋“œํŠธ๋ฆฌ | ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„๋ฅผ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •์„

๊ตญ๊ฐ€๋Œ€ํ‘œ๊ฐ€ ๋งŒ๋“  ์ฝ”๋”ฉ ๊ณต๋ถ€์˜ ๊ฐ€์ด๋“œ๋ถ ์ฝ”๋”ฉ ์™•์ดˆ๋ณด๋ถ€ํ„ฐ ๊ฟˆ์˜ ์ง์žฅ ์ฝ”ํ…Œ ํ•ฉ๊ฒฉ๊นŒ์ง€, ๊ตญ๊ฐ€๋Œ€ํ‘œ๊ฐ€ ์—„์„ ํ•œ ์ปค๋ฆฌํ˜๋Ÿผ์œผ๋กœ ์ค€๋น„ํ•ด๋ณด์„ธ์š”.

www.codetree.ai

 

๋ฐฉํ–ฅ์— ๋งž์ถฐ ์ด๋™

๋ฌธ์ œ

(0, 0)์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ด N๋ฒˆ ์›€์ง์—ฌ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. N๋ฒˆ์— ๊ฑธ์ณ ์›€์ง์ด๋ ค๋Š” ๋ฐฉํ–ฅ๊ณผ ์›€์ง์ผ ๊ฑฐ๋ฆฌ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ตœ์ข… ์œ„์น˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด๋ณด์„ธ์š”.
๋‹จ, dx, dy ํ…Œํฌ๋‹‰์„ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ์„ธ์š”.

์ž…๋ ฅ ํ˜•์‹

์ฒซ ๋ฒˆ์งธ ์ค„์— ์ •์ˆ˜ N์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ๋Š” N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ๊ฐ ์ค„๋งˆ๋‹ค ์ด๋™๋ฐฉํ–ฅ๊ณผ ์ด๋™ํ•œ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ฐฉํ–ฅ์€ W, S, N, E์ค‘์— ํ•˜๋‚˜์ด๋ฉฐ ๊ฐ๊ฐ ์„œ, ๋‚จ, ๋ถ, ๋™์ชฝ์œผ๋กœ ์ด๋™ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • 1 ≤ N ≤ 100
  • 1 ≤ ํ•œ ๋ฒˆ์— ์›€์ง์ด๋Š” ๊ฑฐ๋ฆฌ ≤ 10

์ถœ๋ ฅ ํ˜•์‹

์ฒซ ๋ฒˆ์งธ ์ค„์— ์ตœ์ข… ์œ„์น˜ x, y๋ฅผ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

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

์˜ˆ์ œ1

์ž…๋ ฅ:

4
N 3
E 2
S 1
E 2

์ถœ๋ ฅ:

4 2

์˜ˆ์ œ ์„ค๋ช…

์œ„๋กœ 3์นธ, ์˜ค๋ฅธ์ชฝ์œผ๋กœ 2์นธ, ์•„๋ž˜๋กœ 1์นธ ์ด๋™ ํ›„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‹ค์‹œ 2์นธ ์ด๋™ํ•˜๋ฉด ์ตœ์ข… ์œ„์น˜๋Š” (4, 2)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ œํ•œ

์‹œ๊ฐ„ ์ œํ•œ: 1000ms ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ: 80MB

ํ’€์ด

W,E,N,S ์ˆœ์„œ๋กœ dx, dy ๋ฐฐ์—ด์„ ์„ ์–ธํ•œ๋‹ค. ๊ฐ ์ž…๋ ฅ์„ switch ๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ case์— ๋งž๊ฒŒ x,y ์ขŒํ‘œ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

์ฝ”๋“œ

let n = Int(readLine()!)!
let dx = [-1,1,0,0], dy = [0,0,1,-1]
var x = 0, y = 0

for _ in 0..<n {
    let input = readLine()!.split(separator: " ").map{String($0)}
    
    switch input[0] {
    case "W":
        x += dx[0]*Int(input[1])!
        y += dy[0]*Int(input[1])!
    case "E":
        x += dx[1]*Int(input[1])!
        y += dy[1]*Int(input[1])!
    case "N":
        x += dx[2]*Int(input[1])!
        y += dy[2]*Int(input[1])!
    case "S":
        x += dx[3]*Int(input[1])!
        y += dy[3]*Int(input[1])!
    default:
        break
    }
}

print("\(x) \(y)")
๋ฐ˜์‘ํ˜•