프로그래밍 & 알고리즘 & IT/알고리즘(python) 9

[나동빈 코딩테스트] DFS 구현하기 (재귀함수 사용)

### DFS(깊이 우선 탐색) 함수 구현하기 (5줄짜리 코드) def dfs(graph, v, visited): #그래프의 인접리스트, 시작점, visited 리스트 순 visited[v] = True #방문 표시 후 해당 위치 출력 print(v, end=" ") for k in graph[v]: #해당 노드의 인접노드들 하나씩 체크 if not visited[k]: #방문을 안했다면 dfs 함수를 재귀적으로 적용 dfs(graph,k,visited) # 사용 예시 :: 먼저 인접 리스트를 정의하고 visited 리스트를 만든후에 dfs 함수에 대입. graph = [ #인접 리스트 [], #편의상 0인 노드 있다고 가정 [2,3,8], [1,7], [1,4,5], [3,5], [3,4], [7], ..

[나동빈 코딩테스트] DFS 문제 (얼음과자 만들기)

#나동빈 DFS 문제 - 얼음과자 만들기 #난이도 : 중상 n, m = map(int, input().split()) ice_map = [] # 0이면 얼음, 1이면 틀 for _ in range(n): new_line = list(map(int, input().split())) ice_map.append(new_line) def dfs(i,j): # 세로, 가로 순. dfs 탐색을 통해 얼음과자 1개 만듬. (덩어리) if i = n: # 범위 밖이면 return return if j = m: # 범위 밖이면 return return if ice_map[i][j] == 1: # 원래 1이었던 구간 return False else: # 새로이 찍은 점 (1이 아니었던 ..

[백준 시뮬레이션 문제 3190] 뱀

#백준 시뮬레이션 문제 3190번 - 뱀 #난이도 : 중상 N = int(input()) #맵의 가로 세로 길이 K = int(input()) apple_map = [] for k in range(N): #사과의 위치를 기록. apple_map.append([0] * N) body_map = [] for k in range(N): #자기 몸의 위치를 기록. body_map.append([0] * N) for k in range(K): y, x = map(int,input().split()) #행,열을 순서대로 받음. apple_map[y-1][x-1] = 1 L = int(input()) #방향 변화 횟수 schedule_li = [] for k in range(L): t, d = input().spli..

[백준 시뮬레이션 문제 14503] 로봇 청소기

## 백준 온라인 저지 시뮬레이션 문제 14503번 - 로봇 청소기 #난이도 : 중 N, M = map(int,input().split()) r, c, d = map(int,input().split()) room = [] for i in range(N): #전체 맵 room.append(list(map(int,input().split()))) mark_map = [] #이미 청소한곳을 마크하는 맵 for i in range(N): mark_map.append([0]*M) direction_li = [0,1,2,3] #북, 동, 남, 서 순 dx = [0,1,0,-1] dy = [-1,0,1,0] pos_x = c pos_y = r mark_map[pos_y][pos_x] = 1 tol = 0 count ..

[백준 구현문제 10773] 제로

#백준 구현 문제(10773) - 제로 #0이 들어가면 바로 직전 값을 빼도록 하여 들어가 있는 값들의 최종 합을 구하는 문제 #난이도 : 하 K = int(input()) num_li = [] for i in range(K): add_num = int(input()) if add_num == 0: num_li.pop(-1) #가장 최근에 들어간거 out else: num_li.append(add_num) answer = sum(num_li) print(answer) # 시간복잡도 : O(K)

[백준 시뮬레이션 문제 1966] 프린터 큐

#백준 시뮬레이션 문제 - 1966번 프린터 큐 #난이도 : 중 n_test = int(input()) count_li = [] for k in range(n_test): #테스트의 개수만큼 반복 N, M = map(int,input().split()) #N개의 문서와 타겟이 되는 M번째 문서를 입력. import_li = list(map(int,input().split())) #N개의 문서의 중요도를 순서대로 입력. 시뮬레이션이 진행되면서 계속 갱신됨. record_li = [i for i in range(N)] #1번째부터 N번째 문서를 나열. (단, 0부터 시작함). record_li는 시뮬레이션이 실행되면서 계속해서 갱신되며, 현재 남아있는 문서들의 순서를 나타냄. count = 0 #M번째 문서..

[백준 구현 문제 11866] 요세푸스 문제 0

# 백준 11866번 문제 - 요세푸스 문제 0 # 난이도 : 중 N, K = map(int,input().split()) num_array = [i for i in range(1,N+1,1)] del_idx = 0 #지워야할 array의 index mark_li = [] while len(num_array) > 0 : #array가 모두 지워질때 까지 반복 del_idx = (del_idx + (K-1)) % len(num_array) # 첫번째 지울때는 K번째 숫자 지움. 그 이후부터는 그 index 기준으로 (K-1)씩 shift 하면서 지움. 순환이 있으므로 그 당시의 array의 길이로 나눈 나머지를 이용. mark_li.append(str(num_array[del_idx])) #지우기 전에 숫..

[나동빈 코딩테스트] 구현 문제(게임 개발)

#나동빈 구현 문제 - 게임 개발 #난이도 : 중 N, M = map(int, input().split()) #세로, 가로 A, B, d = map(int,input().split()) #위, 왼쪽으로부터 떨어진 거리 game = [] for k in range(N): game.append(list(map(int,input().split()))) game_mark = [] game_mark.append((B+1,A+1)) #시작점 마킹, x좌표와 y좌표 순. 1부터 시작함. direction_li = [0,1,2,3] #북,동,남,서 순 dx = [0,1,0,-1] dy = [-1,0,1,0] direction = d x = B+1 y = A+1 tol = 0 #방향 바꾸는 한계 while game[y-..