코드는 Swift로 작성하였습니다.
제가 직접 작성한 코드라 최적의 코드가 아닐 수 있음을 알려드립니다. 🐹
문제는 저작권 관련 문제가 있을 수 있어서 적어두지 않았습니다.
처음 나의 생각
상 하 좌 우로 케이스를 나눠서 처리해주면 될 것 같다
var start = [1,1]
let n = 5
let direction = ["R","R","R","U","D","D"]
for i in direction {
switch i {
case "U":
if start[0] > 1 {
start[0] -= 1
}
case "D":
if start[0] < n {
start[0] += 1
}
case "L":
if start[1] > 1 {
start[1] -= 1
}
case "R":
if start[1] < n {
start[1] += 1
}
default:
0
}
}
print(start)
나의 풀이 ...
case문을 활용하여 구현하였다.
var nowX: Int = 1
var nowY: Int = 1
var nx: Int = 1
var ny: Int = 1
let n = 5
let direction = ["R","R","R","U","D","D"]
let dx: [Int] = [0, 0, -1, 1]
let dy: [Int] = [-1, 1, 0, 0]
let moveType = ["L","R","U","D"]
for direct in direction {
for i in 0..<moveType.count {
if moveType[i] == direct {
nx = nowX + dx[i]
ny = nowY + dy[i]
}
}
// 범위를 넘어가면 좌표 입력을 해주지 않는다.
if nx < 1 || ny < 1 || nx > n || ny > n {
continue
}
nowX = nx
nowY = ny
}
print (nowX,nowY)
동빈님 파이썬 코드 참고
파이썬과 달리 nx,ny에 대한 선언을 for문 밖에서 해주어야
for문 밖에서 사용 할 수 있다.