You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
배열 인덱스를 활용할 수 있게끔 - 좌표를 쓰지 않기 위해 출발점을 가운데인 (10, 10)으로 두고, 방문 기록을 담을 21x21 크기의 Bool형 2차원 배열을 만든다.
10,10 에서 출발
departure(출발지)를 기준으로 방문 선은 +1의 값을 가지고, 도착 좌표는 +2의 값을 가진다.
즉, 좌표들은 서로 (2,2)만큼 떨어져 있다고 가정하였다.
좌표에서 +-1의 값은 선이 된다.
x, y 좌표의 이동
R, L(오른쪽, 왼쪽)은 x좌표간의 이동을 뜻하므로 departure, visitLine 배열의 0번 인덱스가 변경될 수 있도록 dirDict에 0의 값을 저장해주었다.
U, D(위, 아래)는 y좌표간의 이동을 뜻하므로 departure, visitLine 배열의 1번 인덱스가 변경될 수 있도록 dirDict에 1의 값을 저장해주었다.
좌표계의 음, 양의 이동
U, R은 좌표계에서 양의 이동을 뜻한다. 따라서 좌표평면의 경계를 넘어가는 명령어를 무시하기 위해 departure[s] + 2 <= 20 이라는 조건을 두었다.
1. 이후 다음 출발점이 될 좌표인 departure에는 +2,
2. 방문한 선이 될 visitLine에는 +1을 해주었다.
D, L은 좌표계에서 음의 이동을 뜻한다. 따라서 좌표평면의 경계를 넘어가는 명령어를 무시하기 위해 departure[s] - 2 >= 0 이라는 조건을 두었다.
1. 이후 다음 출발점이 될 좌표인 departure에는 -2,
2. 방문한 선이 될 visitLine에는 -1을 해주었다.
결과 도출
board[visitLine[0]][visitLine[1]] 좌표가 최초 방문된 좌표라면(false) 결과 값에 +1 을 한다.
이후 board[visitLine[0]][visitLine[1]] 좌표를 방문처리 한다.
💬 풀이
func solution(_ dirs:String)->Int{varboard:[[Bool]]=Array(repeating:Array(repeating: false, count:21), count:21)letdirDict:[String:Int]=["U":1,"R":0,"D":1,"L":0]vardeparture=[10,10],visitLine=[10,10]varresult=0
for i in dirs {lets=dirDict[String(i)]!
if i =="U" || i =="R"{
if departure[s]+2<=20{
visitLine = departure
departure[s]+=2visitLine[s]+=1}}else{
if departure[s]-2>=0{
visitLine = departure
departure[s]-=2visitLine[s]-=1}}
result +=board[visitLine[0]][visitLine[1]]== false ? 1:0board[visitLine[0]][visitLine[1]]= true
}return result
}
The text was updated successfully, but these errors were encountered:
💬 문제
[코딩테스트 연습 - 방문 길이](https://school.programmers.co.kr/learn/courses/30/lessons/49994)
💬 Idea
배열 인덱스를 활용할 수 있게끔 - 좌표를 쓰지 않기 위해 출발점을 가운데인 (10, 10)으로 두고, 방문 기록을 담을 21x21 크기의 Bool형 2차원 배열을 만든다.
10,10 에서 출발
R, L
(오른쪽, 왼쪽)은x좌표
간의 이동을 뜻하므로 departure, visitLine 배열의 0번 인덱스가 변경될 수 있도록 dirDict에 0의 값을 저장해주었다.U, D
(위, 아래)는y좌표
간의 이동을 뜻하므로 departure, visitLine 배열의 1번 인덱스가 변경될 수 있도록 dirDict에 1의 값을 저장해주었다.1. 이후 다음 출발점이 될 좌표인 departure에는 +2,
2. 방문한 선이 될 visitLine에는 +1을 해주었다.
1. 이후 다음 출발점이 될 좌표인 departure에는 -2,
2. 방문한 선이 될 visitLine에는 -1을 해주었다.
💬 풀이
The text was updated successfully, but these errors were encountered: