|
| 1 | +// 캐릭터의 좌표 |
| 2 | +// 문제 설명 |
| 3 | +// 머쓱이는 RPG게임을 하고 있습니다. 게임에는 up, down, left, right 방향키가 있으며 각 키를 누르면 위, 아래, 왼쪽, 오른쪽으로 한 칸씩 이동합니다. 예를 들어 [0,0]에서 up을 누른다면 캐릭터의 좌표는 [0, 1], down을 누른다면 [0, -1], left를 누른다면 [-1, 0], right를 누른다면 [1, 0]입니다. 머쓱이가 입력한 방향키의 배열 keyinput와 맵의 크기 board이 매개변수로 주어집니다. 캐릭터는 항상 [0,0]에서 시작할 때 키 입력이 모두 끝난 뒤에 캐릭터의 좌표 [x, y]를 return하도록 solution 함수를 완성해주세요. |
| 4 | + |
| 5 | +// [0, 0]은 board의 정 중앙에 위치합니다. 예를 들어 board의 가로 크기가 9라면 캐릭터는 왼쪽으로 최대 [-4, 0]까지 오른쪽으로 최대 [4, 0]까지 이동할 수 있습니다. |
| 6 | +// 제한사항 |
| 7 | +// board은 [가로 크기, 세로 크기] 형태로 주어집니다. |
| 8 | +// board의 가로 크기와 세로 크기는 홀수입니다. |
| 9 | +// board의 크기를 벗어난 방향키 입력은 무시합니다. |
| 10 | +// 0 ≤ keyinput의 길이 ≤ 50 |
| 11 | +// 1 ≤ board[0] ≤ 99 |
| 12 | +// 1 ≤ board[1] ≤ 99 |
| 13 | +// keyinput은 항상 up, down, left, right만 주어집니다. |
| 14 | +// 입출력 예 |
| 15 | +// keyinput board result |
| 16 | +// ["left", "right", "up", "right", "right"] [11, 11] [2, 1] |
| 17 | +// ["down", "down", "down", "down", "down"] [7, 9] [0, -4] |
| 18 | +// 입출력 예 설명 |
| 19 | +// 입출력 예 설명 #1 |
| 20 | + |
| 21 | +// [0, 0]에서 왼쪽으로 한 칸 오른쪽으로 한 칸 위로 한 칸 오른쪽으로 두 칸 이동한 좌표는 [2, 1]입니다. |
| 22 | +// 입출력 예 설명 #2 |
| 23 | + |
| 24 | +// [0, 0]에서 아래로 다섯 칸 이동한 좌표는 [0, -5]이지만 맵의 세로 크기가 9이므로 아래로는 네 칸을 넘어서 이동할 수 없습니다. 따라서 [0, -4]를 return합니다. |
| 25 | + |
| 26 | +package main |
| 27 | + |
| 28 | +func solution(keyinput []string, board []int) []int { |
| 29 | + x, y := 0, 0 |
| 30 | + arr := []int{} |
| 31 | + lx := (board[0] - 1) / 2 |
| 32 | + ly := (board[1] - 1) / 2 |
| 33 | + |
| 34 | + for _, v := range keyinput { |
| 35 | + if v == "left" { |
| 36 | + x = x - 1 |
| 37 | + } else if v == "right" { |
| 38 | + x = x + 1 |
| 39 | + } else if v == "up" { |
| 40 | + y = y + 1 |
| 41 | + } else if v == "down" { |
| 42 | + // fmt.Println("y", y) |
| 43 | + y = y - 1 |
| 44 | + } |
| 45 | + if x > lx { |
| 46 | + x = lx |
| 47 | + } else if x < -lx { |
| 48 | + x = -lx |
| 49 | + } else if y > ly { |
| 50 | + y = ly |
| 51 | + } else if y < -ly { |
| 52 | + y = -ly |
| 53 | + } |
| 54 | + } |
| 55 | + |
| 56 | + arr = append(arr, x) |
| 57 | + arr = append(arr, y) |
| 58 | + |
| 59 | + return arr |
| 60 | +} |
| 61 | + |
| 62 | +func main() { |
| 63 | + // keyinput := []string{"left", "right", "up", "right", "right"} |
| 64 | + keyinput := []string{"down", "down", "down", "down", "down"} |
| 65 | + // solution(keyinput, []int{11, 11}) |
| 66 | + solution(keyinput, []int{7, 9}) |
| 67 | +} |
0 commit comments