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

[์ฝ”๋“œํŠธ๋ฆฌ ์ฑŒ๋ฆฐ์ง€] 1์ฃผ์ฐจ - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์Šต

by hyebin (Helia) 2023. 9. 14.
๋ฐ˜์‘ํ˜•

๋Šฆ๊ฒŒ ์‹œ์ž‘ํ•ด์„œ ํ•œ ์ฃผ ๋Šฆ๊ฒŒ ์ž‘์„ฑํ•˜๋Š” 1์ฃผ์ฐจ ์ธ์ฆ๊ธ€!! 

์ฒ˜์Œ ์‹ค๋ ฅ์ง„๋‹จ์„ ํ–ˆ์„ ๋•Œ๋Š” ์ง‘์ค‘ํ•˜์ง€ ๋ชปํ•ด์„œ ์•„์‰ฌ์šด ์ ์ˆ˜๋ฅผ ๋ฐ›์•˜๋‹ค..๐Ÿ˜ข

ํ•˜์ง€๋งŒ ๋‹ค์‹œ ์ง‘์ค‘ํ•ด์„œ ๋ณธ ๊ฒฐ๊ณผ 697์ !!

 

https://www.codetree.ai/missions/5/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

 


ํ’€์ด

๊ฐ ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ x,y ์ขŒํ‘œ ๋ณ€ํ™”๋ฅผ ๋ฏธ๋ฆฌDictionary๋กœ ์ €์žฅ

์ž…๋ ฅ๋ฐ›์€ ๋ฐฉํ–ฅ์— ํ•ด๋‹นํ•˜๋Š” x, y ์ขŒํ‘œ ๋ณ€ํ™”์— ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณฑํ•˜์—ฌ ๊ณ„์‚ฐ

 

์ฝ”๋“œ

let direction: [String: (x: Int, y: Int)] = ["N": (0,1), "E": (1,0), "S": (0,-1), "W": (-1,0)]
let n = Int(readLine()!)!
var x = 0, y = 0

for _ in 0..<n {
    let input = readLine()!.split(separator: " ").map{String($0)}
    let distance = Int(input[1])!
    
    x += (direction[input[0]]?.x ?? 0)*distance
    y += (direction[input[0]]?.y ?? 0)*distance
}

print("\(x) \(y)")

 

๋ฐ˜์‘ํ˜•