Ch9.최단 경로 - 전보
·
코딩 테스트/이취코테
[ 접근 방법 ] 전형적인 다익스트라 알고리즘 문제이다. 책의 학습내용을 토대로 다익스트라 알고리즘을 구현한다. [ 작성 코드 ] import heapq import sys input = sys.stdin.readline INF = int(1e9) n, m, c = map(int, input().split()) distance = [INF] * (n + 1) graph = [ [] for _ in range(n+1) ] for i in range (m): a, b, c = map(int , input().split() ) graph[a].append((b,c)) def dijkstra(c): q = [] distance[c] = 0 heapq.heappush(q,(0,c)) while q: dist, n..
Ch9.최단 경로 - 미래 도시
·
코딩 테스트/이취코테
[ 접근 방법 ] 전형적인 플로이드 워셜 알고리즘 문제이다. 책의 학습내용을 토대로 플로이드 워셜 알고리즘을 구현한다. 단 여기서 k, a, b 순서대로 리스트를 갱신하는 것을 잊지않도록 한다. [ 작성 코드 ] INF = int(1e9) n ,m = map(int,input().split()) data = [[INF]*(n+1) for _ in range(n+1)] for i in range(n+1): data[i][i] = 0 for i in range(m): a,b = map(int,input().split()) data[a][b] = 1 data[b][a] = 1 # x = 최종목적지 k= 들릴곳 x , k = map(int,input().split()) for i in range(n+1): fo..
Lv2.(깊이/너비 우선 탐색) 게임 맵 최단거리
·
카테고리 없음
https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 딱 보고 전형적인 DFS, BFS 문제구나 생각을 했다. 거리를 재는 것이므로 예전에 풀었던 카카오 2020 공채 때 나온 문제와 유사한 풀이가 가능할 것 같아 BFS를 통해 구현해보기로 했다. ( https://school.programmers.co.kr/learn/courses/30/lessons/60063 ) BFS는 보통 Que를 사용하는데, 이에 나는 deque 를 사용하고자 했다. 참고 ..
Lv3.(깊이/너비 우선 탐색) 네트워크 - Python
·
코딩 테스트/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 과거 작성 코드 def solution(n, computers): visited = [False] * n def dfs(computers, v, visited): # 현재 노드 방문 처리 visited[v] = True # 현재 노드와 연결된 다른 노드를 재귀적으로 방문 for i in range(n): if i ..
Lv2.(깊이/너비 우선 탐색) 타겟 넘버 - Python
·
코딩 테스트/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr딱 해당 문제를 본 순간 두가지 경우가 생각났다. 첫번째는 DFS/BFS로 푸는 것. 두번째는 완전탐색으로 푸는 것. 해당 문제 종목이 DFS/BFS인 만큼 깊이, 넓이 탐색으로 풀이를하는 것이 옳겠으나, 오랜만에 구현하려하니 살짝 기억이 나지 않았다.그래서 일단 조건적으로 보았을 때 " 주어지는 숫자의 개수가 최대 20개" 이므로 일단 완전탐색을 통해 구현해보았다. import itertoolsdef..
[ 프로그래밍 언어 ] Java의 JVM에 대해서 설명해 보세요.
·
공부 정리/면접 준비
자바 프로그램을 개발하기 위해서는 우선 파일 확장명이 .java인 텍스트 파일을 생성하고 자바 언어로 코드를 작성해야 합니다. 이렇게 만들어진자바 소스 파일을 컴파일러인 javac 명령어로 컴파일합니다. 컴파일이 성공하면 확장명이 .class인 바이트 코드 파일이 생성됩니다. 바이트 코드 파일은 완전한 기계어가 아니므로 바로 실행할 수 있는 파일이 아닙니다. 바이트 코드 파일을완전한 기계어로 번역해서 실행하려면 java 명령어를 사용해야 합니다. 바이트 코드 파일과 자바 가상 기계 자바 프로그램은 완전한 기계어가 아닌, 바이트 코드 파일(.class)로 구성됩니다. 바이트 코드 파일은 운영체제에서 바로 실행할 수 없고, 자바 가상 기계(JVM : Java Virtual Machine)라는 번역기가 필요합..
[ 운영체제 ] Paging과 Segmentation에 대해서 설명해 보세요.
·
공부 정리/면접 준비
Paging과 Segmentation은 운영체제가 메모리를 관리( Memory Management )하는 방법입니다. 어떠한 프로그램을 실행할 때, 컴퓨터에서는 프로그램들을 메모리 공간에 연속적으로 할당하게 됩니다. 만약 여러 프로그램들이 메모리에 할당되고 해제되는 것이 반복되다 보면 메모리 공간이 조각조각 나뉘게 되어 총메모리가 충분함에도 불구하고 프로그램에 메모리를 할당하는 것이 불가능한 상태가 발생하게 됩니다. 이러한 현상을 바로 메모리 단편화라고 하며, 페이징과 세그멘테이션은 이러한 메모리 단편화의 해결방법입니다. Memory Management - Focus : 메모리 관리에서 크게 다음과 같은 관점으로 효율성이 있는지 확인해야합니다. 1. Utilization: 물리 메모리를 얼마나 아껴쓰는가..
[ 데이터베이스 ] 데이터베이스 정규화에 대해서 설명해 보세요.
·
공부 정리/면접 준비
데이터베이스 정규화에는, 1NF, 2NF, 3NF, BCNF등이 있습니다. 정규화 되지 않은 테이블은, 갱신 이상, 삽입 이상, 삭제 이상 등의 문제가 있습니다. 정규화를 통해, Data Reduncamcy를 제거하며, 데이터 저장을 논리적으로, 의미있게(informative) 할 수 있는 장점이 있습니다. 또한 데이터베이스 구조 확장 시에 구조 변경을 최소화 할 수 있습니다. 1NF, 1차 정규형의 핵심은, 각 Row마다 Column의 값이 1개씩만 있어야 합니다. (Atomic Value) 원칙적으로는 "어떤 관계와 동일 구조"임을 뜻하며, 아래의 조건이 있습니다. 1. 모든 Column(attribute)는 각 Table에서 Unique하다. 2. 모든 entry는 하나의 값을 가져야 하며, Ato..
포카칩인심
포카의 IT 블로그