KWiOS
KWiOS0101
KWiOS
  • 분류 전체보기 (108)
    • Algorithm (41)
      • 이코테 (14)
      • 이코테 문제풀이 (21)
      • 프로그래머스 (6)
    • CS (1)
      • 모두를 위한 컴퓨터 과학(CS50 2019) (0)
    • iOS (15)
    • Swift (36)
      • Swift문법 (32)
      • 기타 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 6

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
KWiOS

KWiOS0101

구현 - 상하좌우(Swift)
Algorithm/이코테 문제풀이

구현 - 상하좌우(Swift)

2022. 6. 10. 18:36
본 내용은 '이것이 취업을 위한 코딩테스트다 with 파이썬' 책을 기반으로 포스팅 하였습니다.

 

문제

저작권 문제가 될 수 있어 문제는 삭제합니다.

 

풀이 코드 

입력 출력
5
R R R U D D
3 4
let n = 5
let move = ["R","R","R","U","D","D"]
var map = Array(repeating: Array(repeating: [Int](), count:n) ,count:n)

var start = [1,1]

let dx = [0,0,-1,1]
let dy = [-1,1,0,0]

for i in 0..<n {
    for j in 0..<n {
        map[i][j].append(contentsOf: [i+1,j+1])
    }
    print(map[i])
}

for i in move {
    switch i {
    case "L":
        if start[1] + dy[0] == 0 {
            continue
        } else {
            start[0] = start[0] + dx[0]
            start[1] = start[1] + dy[0]
        }
    case "R":
        if start[1] + dy[1] == 0 {
            continue
        } else {
            start[0] = start[0] + dx[1]
            start[1] = start[1] + dy[1]
        }
    case "U":
        if start[0] + dx[2] == 0 {
            continue
        } else {
            start[0] = start[0] + dx[2]
            start[1] = start[1] + dy[2]
        }
    case "D":
        if start[0] + dx[3] == 0 {
            continue
        } else {
            start[0] = start[0] + dx[3]
            start[1] = start[1] + dy[3]
        }
    default:
        break
    }
}
print(start) // [3,4]

 

문제 풀이

1. 초기값 세팅
 -. 시작 위치 = [1,1]
 -. L R U D 각각의 이동 좌표 [dx, dy]
 -. 입력받은 n으로 n x n 크기의 빈 배열을 생성하고, 반복문으로 좌표값 입력

2. move 배열을 반복문으로 돌면서 switch문으로 배열 요소에 따라 좌표 이동 
 -. L → 왼쪽으로 이동했을때 y 좌표값이 0이라면 continue로 다음 반복 수행, y의 좌표값이 0이 아니라면 start 좌표값에 [0,-1] 더해서 왼쪽으로 이동한 최종 좌표값 계산
 -.  R → 왼쪽으로 이동했을때 y 좌표값이 0이라면 continue로 다음 반복 수행, y의 좌표값이 0이 아니라면 start 좌표값에 [0,1] 더해서 왼쪽으로 이동한 최종 좌표값 계산
 -. U → 왼쪽으로 이동했을때 x 좌표값이 0이라면 continue로 다음 반복 수행, x의 좌표값이 0이 아니라면 start 좌표값에 [-1,0] 더해서 왼쪽으로 이동한 최종 좌표값 계산
 -. D → 왼쪽으로 이동했을때 x 좌표값이 0이라면 continue로 다음 반복 수행, x의 좌표값이 0이 아니라면 start 좌표값에 [1,0] 더해서 왼쪽으로 이동한 최종 좌표값 계산

3. 최종적으로 이동한 좌표값 [3,4] 출력

 

'Algorithm > 이코테 문제풀이' 카테고리의 다른 글

구현 - 왕실의 나이트(Swift)  (0) 2022.06.11
구현 - 시각(Swift)  (0) 2022.06.10
그리디 - 1이 될 때까지(Swift)  (0) 2022.06.10
그리디 - 숫자 카드 게임(Swift)  (0) 2022.06.10
그리디 - 큰 수의 법칙(Swift)  (0) 2022.06.10
    'Algorithm/이코테 문제풀이' 카테고리의 다른 글
    • 구현 - 왕실의 나이트(Swift)
    • 구현 - 시각(Swift)
    • 그리디 - 1이 될 때까지(Swift)
    • 그리디 - 숫자 카드 게임(Swift)
    KWiOS
    KWiOS

    티스토리툴바