뭔가 이상한거 발견 함
코드1
def solution(n):
visited = [-1] * n
count = 0
def is_Ok(row):
for i in range(row):
if visited[row] == visited[i] or abs(row - i) == abs(visited[row] - visited[i]):
return False
return True
def dfs(row):
nonlocal count
if row == n:
count += 1
return
for col in range(n):
visited[row] = col
if is_Ok(row):
dfs(row + 1)
dfs(0)
return count
코드2
answer = 0
def dfs(pan,num):
global answer
if num == len(pan):
answer += 1
return
for i in range(len(pan)):
pan[num] = i
if check_role(pan,num):
dfs(pan,num+1)
def check_role(pan,target_row):
for i in range(target_row):
if pan[target_row] == pan[i] or target_row - i == abs(pan[target_row] - pan[i]):
return False
return True
def solution(n):
board = [-1]*n
dfs(board,0)
return answer
코드1과 코드2의 차이는 함수의 선언 위치만 다른데 거의 1.5배의 의미있는 속도차이를 보임; 왜 이럼?
'Algorithm' 카테고리의 다른 글
프로그래머스) 보석쇼핑 (0) | 2022.05.31 |
---|---|
백준) 랜선 자르기 (0) | 2022.05.30 |
LeetCode) Largest Number (0) | 2022.05.26 |
프로그래머스) 파일명 정렬 (0) | 2022.05.23 |
python) 정렬에 lambda함수 활용하기 (0) | 2022.05.23 |