전체 글
-
[이코테 # 정렬1] 정렬 소스코드, 선택/삽입/퀵/계수 정렬, sorted()와 sort()의 차이Programming 기초/Coding Test 2023. 6. 9. 02:21
* 선택 정렬 시간복잡도 : O(n^2) 이전 포스팅 선택/삽입 정렬 참고 : https://operationcoding.tistory.com/45 array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(array)): min_index = i # 가장 작은 원소의 인덱스 for j in range(i + 1, len(array)): if array[min_index] > array[j]: min_index = j array[i], array[min_index] = array[min_index], array[i] # 스와프 print(array) * 삽입 정렬 시간 복잡도: 최악의 경우는O(n^2)이지만 보통 어느정도 정렬된 상태에서 삽입 정렬을 쓰기 때문..
-
[Docker] Docker에 서버를 연결하는 방법(port forwarding)et al/Docker&git 2023. 6. 8. 22:19
* Docker에 서버를 연결하는 방법(포트포워딩) 해당 컨테이너에 연결하고자할 때 container가 설치된 운영체제를 (Docker) Host라고 부른다. 하나의 host에는 여러가지 컨테이너를 갖을 수 있다. 컨테이너와 host는 각자 독립된 환경이기때문에 각자의 포트와 파일시스템을 갖고 있다. 그래서 host의 포트와 container의 포트를 연결하는 작업이 필요하고, 이 작업을 port forwarding이라고 한다. 실행 환경은 컨테이너에게 맡기고, 파일을 수정하는 작업은 host에서 진행하는 방법이 안전하고 버전 관리에 용이해서 좋다. 이와 같은 방법을 적용하는 실습은 생활코딩 영상에서 확인할 수 있다. * 참고자료 https://youtube.com/playlist?list=PLuHgQV..
-
[Docker] 설치 및 기본 용어et al/Docker&git 2023. 6. 8. 20:31
* Docker 설치 https://www.docker.com/ Docker: Accelerated, Containerized Application Development Docker is a platform designed to help developers build, share, and run modern applications. We handle the tedious setup, so you can focus on the code. www.docker.com 공식 사이트에서 본인 OS(windows, mac, linux) 환경에 맞게 다운 받는다. * 'Docker Desktop requires a newer WSL kernel version.' 해결방법 Docker을 설치 후 처음 맞닥뜨린 팝업창이..
-
[이코테 # DFS/BFS 2] 음료수 얼려 먹기(DFS), 미로탈출(BFS)Programming 기초/Coding Test 2023. 6. 7. 23:44
* 음료수 얼려 먹기(p.149) DFS 시간제한 : 30분 n, m = map(int, input().split()) case = [] for i in range(n): case.append(list(map(int, input()))) def dfs(x, y): # 상하좌우, 현재 위치의 x,y를 입력 if x = n or y = m: return False if case[x][y] == 0: case[x][y] = 1 dfs(x - 1, y) # 상 dfs(x + 1, y) # 하 dfs(x, y - 1) # 좌 dfs(x, y + 1) # 우 return True return False # 순서대로 탐색해서 아이스크림의 개수를 센다. count = 0 for i in range(n): for j i..
-
[이코테 # DFS/BFS 1] DFS, BFS 예제Programming 기초/Coding Test 2023. 6. 7. 21:03
* DFS(Depth-First Search, 깊이 우선 탐색) 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘. 선입후출. 스택(재귀 함수) 사용 관행적으로 인접한 노드 중에서 방문하지 않은 노드가 여러 개 있으면 번호가 낮은 순서부터 처리한다. def dfs(graph, v, visited): # 현재 노드를 방문 처리 visited[v]=True print(v, end=' ') # 현재 노드와 연결된 다른 노드를 재귀적으로 방문 for i in graph[v]: if not visited[i]: dfs(graph, i, visited) # 인접 리스트 graph = [ [], [2, 3, 8], [1, 7], [1, 4, 5], [3, 5], [3,4], [7], [2, 6, 8], [1,7] ..
-
[이코테 # 구현3] 시뮬레이션 문제 : 게임 개발Programming 기초/Coding Test 2023. 6. 7. 02:11
* 게임 개발(p.118) 시간제한 : 40분 전형적인 시뮬레이션 문제 n, m = map(int, input().split()) x, y, direction = map(int, input().split()) M = [] for i in range(n): M.append([]) M[i] = list(map(int, input().split())) M[x][y] = 9# 시작점 지나온 자리로 표시 dx = [-1, 0, 1, 0] # 순서대로 북, 동, 남, 서 dy = [0, 1, 0, -1] # 순서대로 북, 동, 남, 서 def turn_left(): global direction direction -= 1 if direction == -1: direction = 3 not_move = 0 while..
-
[이코테 # 구현2] 왕실의 나이트Programming 기초/Coding Test 2023. 6. 6. 22:59
* 왕실의 나이트 n*n 체크판에서 나이트의 현재위치를 입력했을 때 나이트가 움직일 수 있는 경우의 수를 출력한다. 열은 abc로 표시하고 행은 123으로 표시한다. 입력 a2은 2행 1열을 뜻함. n = input() r = int(n[1]) c = int(ord(n[0])) - (int(ord("a")) - 1) step = [[-1, -2], [1, -2],[-1, 2], [1, 2], [-2, 1], [-2, -1], [2, -1], [2, 1]] # (c,r)상하좌우 count = 0 for i in range(8): step[i][0] += c step[i][1] += r for i in range(8): if step[i][0] >= 1 and step[i][0] = 1 and step[i]..
-
[이코테 # 구현1] 시뮬레이션 문제: 상하좌우, 완전 탐색 문제 : 시각Programming 기초/Coding Test 2023. 6. 6. 21:40
* 상하좌우(P.110 예제 4-1) 풀이 시간 : 15분 N = int(input()) path = list(input().split()) x, y = 1, 1 for i in range(len(path)): if path[i] == "L" and y - 1 > 0: y -= 1 elif path[i] == "R" and y + 1 0: x -= 1 elif path[i] == "D" and x + 1 = 3 and n = 13 and n = 13 and n < 23: print((3600 - 45 * 45) *..