[구현] 상하좌우 - swift

ohtt-iOS·2020년 12월 3일
0
post-thumbnail

코드는 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문 밖에서 사용 할 수 있다.



📚 참고자료

  • 이것이 코딩테스트다
profile
오뜨 삽질 🔨 블로그

0개의 댓글