Algorithm

궁금함) 함수내 함수, 함수밖 함수 시간차이

주코식딩 2022. 5. 31. 17:09

뭔가 이상한거 발견 함

 

 

코드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