https://school.programmers.co.kr/learn/courses/30/lessons/43163
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(begin, target, words):
maxSize = 2**63-1
def isValid(a, b):
a = list(a)
b = list(b)
diff = 0
for i in range(len(a)):
if a[i] != b[i]:
diff += 1
if diff > 1 :
return False
return True
global answer
answer = maxSize
global visit
visit = [False] * len(words)
def dfs(w, depth):
if w == target:
global answer
answer = min(answer, depth)
return
if depth >= answer:
return
for (i, temp) in enumerate(words):
global visit
if visit[i]:
continue
if isValid(temp, w):
visit[i] = True
dfs(temp, depth+1)
visit[i] = False
dfs(begin, 0)
if answer == maxSize:
return 0
return answer
func solution(_ begin:String, _ target:String, _ words:[String]) -> Int {
var answer = Int.max
var visit = [Bool](repeating: false, count: words.count)
func isValid(_ a: String, _ b: String) -> Bool {
let a = Array(a)
let b = Array(b)
var diff = 0
for i in 0..<a.count {
if a[i] != b[i] {
diff += 1
}
if diff > 1 {
return false
}
}
return true
}
func dfs(_ w: String, _ depth: Int) {
if target == w {
answer = min(answer, depth)
return
}
if depth >= answer {
return
}
for (i, temp) in words.enumerated() {
if visit[i] { continue }
if isValid(temp, w) {
visit[i] = true
dfs(temp, depth + 1)
visit[i] = false
}
}
}
dfs(begin, 0)
if answer == Int.max {
return 0
}
return answer
}
[프로그래머스] 땅따먹기 (1) | 2024.01.04 |
---|---|
[프로그래머스] 뒤에 있는 큰 수 찾기 (0) | 2024.01.03 |
[프로그래머스] 주차 요금 계산 (0) | 2023.12.29 |
[프로그래머스] 압축 (0) | 2023.12.26 |
[프로그래머스] 네트워크 (1) | 2023.12.25 |