-
[programmers/Swift] 방문 길이Archive/Questions 2022. 5. 30. 18:06728x90
programmers.co.kr - 코딩테스트연습 - Lv.2 - Summer/Winter Coding(~2018) - 방문 길이
Constraints :
- dirs는 string형으로 주어지며, 'U', 'D', 'R', 'L' 이외에 문자는 주어지지 않습니다.
- dirs의 길이는 500 이하의 자연수입니다.
// // Created by Yongwoo Marco on 2022/05/30. // Copyright © 2022 Yongwoo Marco Kim. All rights reserved. // func solution(_ dirs:String) -> Int { let directions = ["U":(1, 0), "D":(-1,0), "R":(0, 1), "L":(0, -1)] // (y, x) var past = [(Int, Int, Int, Int)](), now = (0, 0), bound = (-5...5) for direction in dirs { let plus = directions[String(direction)]! let nextY = now.0 + plus.0 let nextX = now.1 + plus.1 if bound ~= nextX, bound ~= nextY { if !past.contains(where: { $0 == (now.0, now.1, nextY, nextX) || $0 == (nextY, nextX, now.0, now.1) }) { past.append( (now.0, now.1, nextY, nextX) ) } now = (nextY, nextX) } } return past.count }
How I tried this :
다시 방문한다는 루트를 처리하는걸 고민했다.길게 생각안하고 두 점을 저장하고 두 점이 겹치는 경우를 체크하는 형태로 처리했다.
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90'Archive > Questions' 카테고리의 다른 글
[programmers/Swift] 스킬트리 (0) 2022.06.01 [programmers/Swift] 영어 끝말잇기 (0) 2022.05.31 [programmers/Swift] 짝지어 제거하기 (0) 2022.05.26 [programmers/Swift] 예상 대진표 (0) 2022.05.25 [programmers/Swift] 가장 큰 정사각형 찾기 (0) 2022.05.24