자기개발👨‍💻 142

[Python] 스킬트리 - 프로그래머스 Lv2

"CBD"라는 스킬트리 skill이 주어진다. skill_trees의 스킬들은 skill 스킬트리의 순서를 무조건 따라야 하고, 선행 스킬을 무조건 진행해야 한다. "CBADF"의 경우 중간 정해지지 않은 스킬이 들어가지만, CBD 순서대로 스킬을 완료했으므로 정답이다. 하지만 "BACDE"같은 경우에는 B가 C 스킬을 배우기도 전에 먼저 배우려고 해 정답이 아니다. queue 자료구조를 활용해 스택을 구현할 것이다 (popleft 활용) tree 스킬트리를 큐로 전환하고, 맨 앞인덱스가 skill에 포함되고 존재한다면 popleft로 삭제해준다. 하지만 skill에 포함되지 않는데 맨 앞 인덱스가 아니라면 선행스킬을 배우지 않고 먼저 나타난 것이기에 정답이 아니다. 이 때 위에서 설정한 is_tree를..

[Python] 안전지대 - dfs, bfs로 풀기

출처 : 코드트리 문제 : 첫 번째 줄에는 N과 M이 공백을 사이에 두고 주어지고, 두 번째 줄부터는 N개의 줄에 걸쳐 각 행에 위치한 M개의 마을의 높이 정보가 공백을 사이에 두고 주어집니다. k이하의 집들은 모두 물에 잠긴다고 한다. 물에 잠기지 않은 덩어리(?)들을 안전지대라고 한다면, 안전지대가 최대로 될 때의 k를 구하여라. (집의 높이는 최대100, 따라서 빗물높이 k를 1부터 100까지 올리면서 구해야 한) 출력 : 1 이상의 K 중, 안전 영역의 수가 최대가 될때의 K와 그 때의 안전 영역의 수를 공백을 사이에 두고 출력합니다. 만약 안전 영역의 수가 최대가 되는 K가 여러 개라면, 그 중 가장 작은 K를 출력합니다. import sys from collections import deque..

파이썬 알면 좋은 내용!

1. 마름모 범위 체크 (↓마름모의 크기가 1일때) 1 1 1 1 1 위 격자에서 1이 있는 부분만을 마름모라고 표현한다면, (정사각형이고 한 변의 크기를 n이라고 하자) (0,0) ~ (n-1,n-1) 즉, 좌측 위부터 우측 아래까지 모든 영역에서 (a,b)가 마름모의 범위에 속하는지 구하는 방법! 중앙의 인덱스 값을 (cx, cy)라고 한다면 아래 범위 내부에 속해야 한다. |a-cx| + |b-cy| 1차원배열 tmp = [[1,2],[3,4]] result = sum(tmp, []) # tmp 내부의 리스트와 빈 리스트를 합친다는 의미로, 결국에 tmp 내부 리스트 값만 추출돼서 1차원배열로 저장됨 3. 격자에서 쓰면 좋은 스킬 (1) dx, dy 테크닉 (2) 빈 board를 만들어서 방문 체크..

Python 언어로 조합 구현! (combi함수안쓰고!)

입력 변수 n, arr arr는 n*2개의 크기를 가지고 있다고 하자. import sys n = 2 arr = [1,2,3,4] numbers = [] def print_combination(arr): for i in arr : print(i, end=' ') print() # curr_idx : 탐색의 정도, 배열을 모두 탐색했을 때 종료해야 하므로 # curr_idx == 배열의 크기 가 재귀함수의 종료조건. (성공/실패 모두 포함) # 그리고 선택된 배열의 크기를 나타내는 cnt -> numbers 배열에 append 할 때마다 cnt+1 되고 있으므로. # 따라서 cnt의 크기는 몇 개를 선택했느냐, 조합 선택 여부를 살펴보는 조건. (성공일때만) def make_combination(curr_..