programmers 3

[프로그래머스 문제풀이] 정수 삼각형

위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한사항 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. 입출력 예 triangle result [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 (0)7(0) \|\| (0..

프로그램/Python 2022.04.21

[프로그래머스 문제풀이] 가장 먼 노드

그래프를 탐색하며 가장 먼 노드를 찾는 문제이다. 나는 BFS를 이용하여 거리를 구한 뒤 가장 먼노드를 찾았다. def solution(n, edge): answer = 0 v = [set() for _ in range(n+1)] visit = [-1] * (n+1) for e in edge: v[e[0]].add(e[1]) v[e[1]].add(e[0]) def bfs(root): from collections import deque queue = deque() queue.append((root, 0)) visit[root] = 0 while queue: n, l = queue.popleft() for e in v[n]: if visit[e] == -1: visit[e] = l+1 queue.appen..

프로그램/Python 2022.04.19

[프로그래머스 문제풀이] 네트워크

문제 풀이 상 깊이/너비 우선 탐색 유형으로 풀이되는 문제이다. 내가 풀은 방법은 아래와 같다. def solution(n, computers): answer = 0 visited = [0] * n def dfs(i): nonlocal answer visited[i] = 1 for n, c in enumerate(computers[i]): if c == 1: if 0 == visited[n]: visited[n] = 1 dfs(n) for i in range(n): if visited[i] == 0: dfs(i) answer+= 1 return answer통상 깊이우선탐색을 사용할 때는 스택을 사용하고, 너비우선탐색을 사용할 때는 큐를 사용하는데 이 부분이 현재는 익숙하지가 않아 재귀문법으로 풀이하였다...

프로그램/Python 2022.04.19