일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 자바
- 검색트리
- Kotlin
- 다이나믹 프로그래밍
- inflearn
- SQL
- algorithm
- Web
- javascript
- SWEA
- 구현
- android
- Spring
- 코딩테스트
- front-end
- Color
- CleanCode
- 순환
- codecademy
- java
- CSS
- 프로그래머스
- 클린코드
- 알고리즘
- BFS
- 정렬
- 해슁
- html
- DP
- DFS
- Today
- Total
목록DFS (9)
깡뇽
문제 : 1년 동안 각 달의 수영장 이용 계획을 세우고 가장 적은 비용으로 수영장을 이용할 수 있는 방법 찾기 1. 1일 이용권 : 하루 이용 가능. 2. 1달 이용권 : 한 달 이용 가능. 매달 1일부터 시작. 3. 3달 이용권 : 연속 세 달 이용 가능. 매달 1일부터 시작. (11월, 12월, 다음해 1월 사용 불가능) 4. 1년 이용권 : 일 년 이용 가능. 매년 1월 1일부터 시작. - 입력 테스트 케이스 T 1일 이용권 요금, 1달 이용권 요금, 3달 이용권 요금, 1년 이용권 요금 1월~12월 이용 계획 - 출력 수용장 이용 계획대로 진행했을 때 가장 적게 지출하는 비용 - 제약 사항 10 ≤ 이용권 요금 ≤ 3,000 각 달의 이용 계획은 각 달의 마지막 일자보다 크지 않음 문제 이해 1월..
문제 : N * N 크기의 부지에 최대한 긴 등산로 만들기 1. 등산로는 가장 높은 봉우리에서 시작. 2. 높은 지형에서 낮은 지형으로 가로 또는 세로 방향으로 연결. (높이가 같거나 낮은 지형이거나 대각선 방향 연결 불가능) 3. 한 곳을 골라 최대 K 깊이 만큼 지형 깎기 공사 가능. - 입력 지도 크기 N, 최대 공사 가능 깊이 K N * N의 지도 정보 - 출력 만들 수 있는 가장 긴 등산로의 길이 - 제약사항 3 ≤ N ≤ 8, 1 ≤ K ≤ 5, 1 ≤지형의 높이 ≤ 20 가장 높은 봉우리 최대 5개 지형은 정수 단위로만 깎기 지형 높이 1보다 작게 만들기 가능 문제 이해 N * N 크기의 지도에서 등산로를 만들고, 그 중에서 가장 긴 등산로의 길이를 찾자! 접근 방법 DFS 사용해서 등산로를..
"2115. [모의 SW 역량테스트] 벌꿀채취"에 기반을 두는 문제. 문제 : N개의 벌통이 있는데, 각 벌통에 있는 꿀의 양으로 부터 벌꿀을 채취해 얻을 수 있는 최대 수익 알아내기 1. 꿀은 최대 C까지만 채취 가능 2. 서로 다른 벌통에서 채취한 꿀이 섞이지 않도록 하나의 벌통에서 채취한 꿀은 하나의 용기에 담기 3. 하나의 벌통에서 꿀 채취할 때, 한 번에 모든 꿀을 채취 4. 채취한 꿀을 팔 때, 하나의 용기 속 꿀의 양이 많을수록 상품가치가 높고 각 용기의 꿀 양을 제곱만큼 수익 발생 ex) 6, 1, 8 만큼 꿀이 담긴 용기 3개를 판매하면 (6*6) + (1*1) + (8*8) = 36 + 1 + 64 = 101 수익이 생김 - 입력 테스트 케이스 개수 T T줄 - 벌통 크기 N, 꿀 채취..

DFS 유형의 문제를 풀어보았다. 2210번 숫자판 점프 풀이 #솔루션 board = [] # 입력 받는 숫자판 result = [] # 완성된 여섯 자리 숫자들 # 숫자판 입력 for _ in range(5): line = list(map(str, input().split())) board.append(line) # 상,하,좌,우 방향 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def dfs(x, y, num): if len(num) == 6: # 6자리의 숫자가 완성되면 if num not in result: # 중복이 있는지 확인해서 없으면 result.append(num) # 추가 return # 상, 하, 좌, 우 이동 for i in range(4): nx = x + ..

깊이 우선 탐색 DFS 유형의 문제를 선택했다. DFS 개념은 방향 없는 그래프를 기본으로 하여 설명되곤 하는데 본 개념을 그대로 문제로 나타낸 것이다. 정점 N개와 간선 M개가 주어지고 M개의 줄에 간선 양 끝점인 u와 v가 주어지는데 이때 연결되는 요소의 개수를 구해야 한다. 11724번 연결 요소의 개수 풀이 [시도1] 맞았습니다!! with 솔루션 n, m = map(int, input().split()) graph = [[] for _ in range(n+1)] cnt = 0 # graph 채우기 for _ in range(m): u, v = map(int, input().split()) # 방향이 없으므로 두 개 모두 추가 graph[u].append(v) graph[v].append(u) #..

DFS 유형의 다른 문제 도전!! 배추밭 안에 배추의 좌표값이 주어지고 해당 좌표와 상하좌우로 연결된 좌표에도 배추가 있으면 하나의 구역으로 취급한다. 한 구역마다 배추흰지렁이 1마리가 사는데 배추밭에 있는 총 지렁이의 마리 수를 출력하자. 1012번 유기농 배추 풀이 [시도1] 맞았습니다!! with 솔루션 T = int(input()) #케이스 개수 #케이스 개수 만큼 코드 작동 while T > 0: N, M, K = map(int, input().split()) #각각 세로, 가로, 좌표 개수 field = [[0]*N for i in range(M)] #배추밭 #배추밭 배추 좌표 입력받기 for _ in range(K): x, y = map(int, input().split()) field[y]..

DFS와 관련된 문제를 풀고자 해당 유형의 문제들 중에서 그나마 난이도가 낮은 녀석을 골라보았다. 네트워크가 연결된 컴퓨터들은 함께 바이러스에 걸리게 된다. 첫째 줄 : 컴퓨터의 수 둘째 줄 : 네트워크 상 직접 연결된 컴퓨터 쌍의 수 N 줄 : 네트워크 상 직접 연결된 컴퓨터 번호 쌍 이러한 입력이 있을 때, 1번 컴퓨터의 감염으로 인해 바이러스에 걸리게 되는 컴퓨터의 수를 구하자. 2606번 바이러스 풀이 [시도1] 맞았습니다!! with 솔루션 n = int(input()) l = int(input()) graph = [[] for _ in range(n+1)] for _ in range(l): a, b = map(int, input().split()) graph[a].append(b) graph[..

Day9 DF/BFS 문제풀기 - 음료수 얼려 먹기(난이도 중하) N X M 크기의 얼음 틀에 뚫린 부분은 0, 칸막이가 있는 부분은 1로 표시되며 구멍이 뚫린 부분은 상, 하, 좌, 우로 붙어 있다면 연결되어 있다고 간주한다. 만들어지는 총 아이스크림의 개수 구하자. 첫째 줄: N과 M N줄 : 얼음 틀의 형태. 0 또는 1. 음료수 얼려 먹기 풀기 #솔루션 n, m = map(int, input().split()) ice = [] for i in range(n): ice.append(list(map(int, input()))) def dfs(x, y): # 범위 밖 if x = n or y = m: return False # 현재 노드가 아직 방문하지 않은 곳이면 if ice[x][y] == 0: i..
Day8 탐색(Search) : 많은 데이터 중에서 원하는 데이터를 찾는 과정 DFS/BFS는 대표적인 탐색 알고리즘. 스택 & 큐에 대한 이해가 필요. 자료구조(Data Structure) : 데이터를 표현, 관리, 처리하기 위한 구조 - push : 데이터 삽입 - pop : 데이터 삭제 - overflow : 수용 가능한 데이터의 크기를 넘은 상태에서 삽입 연산 수행 시 발생 - underflow : 자료구조에 데이터가 없는데 삭제 연산 수행 시 발생 스택(Stack) : FILO(First In Last Out). 선입후출. LIFO(Last In First Out). 후입선출. => 먼저 쌓은 것은 나중에 뺄 수 있고, 나중에 쌓은 것은 먼저 뺄 수 있음. - append() : 리스트 맨 뒤에..