DFS / BFS
알고리즘/문제풀이2023. 9. 13. 09:25DFS / BFS

# DFS 함수 정의 def dfs(graph, v, visited): # 현재 노드를 방문 처리 visited[v] = True print(v, end=' ') #방문된거 먼저 출력 # 현재 노드와 연결된 다른 노드를 재귀적으로 방문 for i in graph[v]: if not visited[i]: #인접된 노드가 방문되지 않았다면 dfs(graph, i, visited) # 각 노드가 연결된 정보를 인접리스트 자료형으로 표현(2차원 리스트) graph = [ [], #인덱스 0 비워둠 [2, 3, 8], #1번부터 시작 1번 노드가 2,3,8과 인접함 [1, 7], # 2는 1,7과 인접 [1, 4, 5], [3, 5], [3, 4], [7], [2, 6, 8], [1, 7] ] # 각 노드가 방문..

구현 -4문제
알고리즘/문제풀이2023. 9. 13. 09:25구현 -4문제

구현머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정->풀이를 떠오르는것은 쉽지만 소스코드로 옮기기 어려운 문제 -알고리즘은 간단한 코드가 지나칠 만큼 길어지는 문제-실수 연산을 다루고, 특정 소수점 자리까지 출력-문자열을 특정한 기준에 따라 끊어 처리-적절한 라이브러리를 찾아 사용(순열,조합) 2차원 공간에서의 처리다양한 시뮬레이션 공간 : 한 좌표에 존재하는 캐릭터가 반복적으로 어떤 위치로 이동한다.  어떤방향으로 이동할지 적을 수 있다.dx =[0]  ->행은 가만히 있고dy =[1]  ->열을 기준으로 하나 증가 ==오른쪽으로 이동  1.상하좌우2차원 행렬의 인덱스느 (0,0)으로 시작한다.하지만 문제에서 (1,1)으로 출발한다고 하면가장 첫번째 인덱스 사용하지 않는 방법 or (1,1)을 (0,0..

재귀 함수
알고리즘/문제풀이2023. 9. 13. 09:24재귀 함수

탐색 많은 데이터 중에서 원하는 데이터를 찾는 과정 특정 조건에 맞는 데이터 존재하는지 만약 존재한다면 어떤 위치에 존재하는지 찾는다. 스택 먼저 들어온 데이터가 나중에 나가는 선입후출 큐 먼저 들어온 데이터가 먼저 나가는 선입선출 재귀 함수(Recursive) - 자기 자신을 다시 호출 - 잘 활용하면 복잡한 알고리즘을 간결하게 작성할 수 있다. - 함수가 실행시 함수들의 정보가 스택프레임에 쌓여서 메모리에 올라감. ->컴퓨터 구조 측면에서 보았을 때, 스택 자료구조와 동일 그래서 스택 라이브러리 대신 재귀함수 이용하는 경우 많다. - 문제 풀이에서 사용할 때는 재귀 함수의 종료 조건을 반드시 명시 -> 명시하지 않으면 함수 무한 호출 - 모든 재귀 함수는 반복문을 이용하여 동일한 기능을 구현할 수 있..

그리디 6문제
알고리즘/문제풀이2023. 9. 13. 09:24그리디 6문제

현재 상황에서 지금 당장 좋은 것만 고르는 방법으로 그리디 알고리즘은 가장 큰 값만 고른다. (탐욕법) 1.거스름돈 1. 최적의 해를 빠르게 구하기 위해서는 가장 큰 화폐 단위부터 돈을 거슬러 준다. -> 동전 중 큰 단위가 항상 작은 단위의 배수이므로 작은 단위들의 동전을 종합해 다른 해가 나올 수 없다. 큰 단위가 작은 단위의 배수가 아니라면 최적의 해가 나오지 않는다. 2. n원을 거슬러 줘야 할때, 가장 먼저 500원으로 거슬러 줄 수 있을 만큼 거슬러 준다. (이후 100, 50, 10원~) n = 1260 #거슬러줄 돈 count = 0 # 큰 단위의 화폐부터 차례대로 확인하기 (리스트에 담기) coin_types = [500, 100, 50, 10] for coin in coin_types:..

image