목록분류 전체보기 (768)
우노
문제 하나의 수열에는 다양한 수가 존재한다. 이러한 수는 크기에 상관없이 나열되어 있다. 이 수를 큰 수부터 작은 수의 순서로 정렬해야한다. 수열을 내림차순으로 정렬하는 프로그램을 만드시오. 입력 조건 첫째 줄에 수열에 속해 있는 수의 개수 N이 주어진다. (1
들어가기 앞서 GPU 의 메모리가 부족할 경우, 아래 코드를 통해 GPU 메모리 사용량을 지정할 수 있습니다. 예제 코드 import tensorflow as tf gpus = tf.config.experimental.list_physical_devices('GPU') # GPU 메모리를 1024MB (1GB)로 지정합니다. if gpus: tf.config.experimental.set_virtual_device_configuration(gpus[0], [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=1024)])
들어가기 앞서, 해당 포스트에선, Python DIctionary 를 Key, Value 로 정렬하는 방법에 대해서 다루겠습니다. Key 기준 정렬 my_dict = {'c': 3, 'a': 1, 'b': 2, 'e': 1, 'd': 2} # Key 기준 오름차순 정렬 # [('a', 1), ('b', 2), ('c', 3), ('d', 2), ('e', 1)] a = sorted(my_dict.items()) # Key 기준 내림차순 정렬 # [('e', 1), ('d', 2), ('c', 3), ('b'..
들어가기 앞서, 일반적으로 Python 정렬은, sorted() 또는 .sort() 를 사용합니다. 해당 포스트에선, Lambda 를 사용해 여러 조건으로 정렬하는 방법에 대해서 다뤄보겠습니다. 예제 코드 a = [(1, 3), (0, 3), (1, 4), (1, 5), (0, 1), (2, 4)] # 리스트 각 요소의 첫 번째 인자를 기준으로 오름차순 정렬하고, 그 안에선 두 번째 인자를 기준으로 오름차순 정렬합니다. # [(0, 1), (0, 3), (1, 3), (1, 4), (1, 5), (2, 4)] b = sorted(a) # 리스트 각 요소의 첫 번째 인자를 기준으로 내림차순 정렬하고, 그 안에선 두 번째 인자를 기준으로 내림차순 정렬합니다. # [(2, 4), (1, 5), (1, 4), ..
선택 정렬 개념 정렬 되지 않은 데이터들 중 가장 작은 데이터를 선택하고, 정렬 되지 않은 데이터들 중 가장 왼쪽에 있는 데이터와 교환하는 알고리즘입니다. 특징 시간복잡도는 현재 데이터의 정렬 상태와 상관이 없습니다. 시간복잡도 항상 O(N^2) 매번, 정렬 되지 않은 데이터들을 비교 연산하며, 가장 작은 수를 찾습니다. N + (N - 1) + (N - 2) + … + 2 = N x (N-1 ) / 2 가장 작은 수를 찾아서 데이터를 교환합니다. N - 1 두 시간 복잡도를 더하면, O(N^2) 가 됩니다. 구현 코드 array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(array)): min_index = i # 가장 작은 원소의 인덱스 for j i..
들어가기 앞서, TFLite는, interpreter의 input type과 output type을 통해 양자화 적용 상태를 확인할 수 있습니다. 예제 코드 import tensorflow as tf interpreter = tf.lite.Interpreter(model_path="tflite모델경로") input_type = interpreter.get_input_details()[0]['dtype'] print('input: ', input_type) output_type = interpreter.get_output_details()[0]['dtype'] print('output: ', output_type) # FP32 이므로, 양자화 없이 ..
문제 N x M 크기의 직사각형 형태의 미로에 여러 마리의 괴물이 있어 이를 피해 탈출해야 한다. 현재 위치는 (1, 1)이고 미로의 출구는 (N,M)의 위치에 존재하며 한 번에 한 칸씩 이동할 수 있다. 괴물이 있는 부분은 0으로, 괴물이 없는 부분은 1로 표시되어 있다. 미로는 반드시 탈출할 수 있는 형태로 제시된다. 탈출하기 위해 움직여야 하는 최소 칸의 개수를 구하라. 칸을 셀 때는 시작 칸과 마지막 칸을 모두 포함해서 계산한다. 입력 조건 첫째 줄에 두 정수 N, M(4 = 0 and ny < m): # 인접한 노드를 방문할 수 있는지 확인 if (check[nx][ny] == 0 and maze[nx][ny] == 1): # 방문할 수 있다면 큐에 삽입 queue.append((nx,ny)) ..
문제 N × M 크기의 얼음 틀이 있다. 구멍이 뚫려 있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다. 구멍이 뚫려 있는 부분끼리 상, 하, 좌, 우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다. 이때 얼음 틀의 모양이 주어졌을 때 생성되는 총 아이스크림의 개수를 구하는 프로그램을 작성하라. 입력 조건 첫 번째 줄에 얼음 틀의 세로 길이 N과 가로 길이 M이 주어진다. (1 = 0 and ny < m): # 인접 노드에 음료수를 채울 수 있는지 확인 if (ice_board[nx][ny] == 0): # 인접 노드 방문 dfs(nx, ny) # 모든 위치에 음료수 채우기 for i in range(n): for j in range(m): # 해당 노드에 음료수를 채울 수 있다면 if (..
들어가기 앞서, 공백이 없는 연속된 문자열에서 한 글자씩 분리해 리스트로 저장하고 싶다면, 아래 코드와 같이, 해당 문자열을 list 로 변환하면 됩니다. 예제 코드 test = "00110" list(test) # ['0', '0', '1', '1', '0']
DFS 모든 경로를 전부 탐색할 경우에 사용됩니다. 또는, 경로 이동 시 가중치가 붙거나 제약이 있을 경우에 사용됩니다. BFS 최단 경로만 탐색할 경우에 사용됩니다.