[백준] 11265번 끝나지 않는 파티 _ Python
·
Algorithms/Shortest path
https://www.acmicpc.net/problem/11265 11265번: 끝나지 않는 파티 입력의 첫 번째 줄에는 파티장의 크기 N(5 ≤ N ≤ 500)과 서비스를 요청한 손님의 수 M(1 ≤ M ≤ 10,000) 이 주어진다. 각각의 파티장은 1번부터 N번까지 번호가 붙여져 있다. 다음에는 N개의 줄에 걸 www.acmicpc.net [초기 접근 방법] - M명의 사람들의 출발점이 모두 다르다. → 따라서 플로이드 알고리즘으로 모든 노드 간의 최단거리를 구한다. 1. A 시작점에서 B 지점까지의 최단 경로를 구한다. 2. 위 최단 경로가 C 오픈 시간보다 빠르면 → 파티장에 도착할 수 있다: 길면 → 파티장에 도착할 수 없다. [생각] - 다익스트라나 벨만 포드에 비해, 구현이 직관적이며 간..
[백준] 18352번 특정 거리의 도시 찾기 _ Python
·
Algorithms/Shortest path
https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net [초기 접근 방법] - 특정 노드에서 출발하여, 최단 거리가 K인 모든 도시의 번호를 오름차순으로 출력 - 특정 노드이므로, bfs 탐색과 다익스트라 알고리즘을 사용할 수 있다. [생각] - bfs로는 금방 풀었지만, 다익스트라 알고리즘 복습하는 문제로 좋았다. [코드] 1) bfs # 풀이 시간 : 20분 # 시간복잡도 :..
5주차. DB 트랜잭션, 회복
·
CS./데이터베이스
1. DB 세션에 대해서 설명해주세요.*사용자 또는 응용 프로그램이 DB에 접속하고 상호 작용하기 위해 필요한 연결로,  DB 접속을 시작으로 접속 종료까지의 전체 기간을 의미한다. [특징]1) 연결 유지     - 세션이 확립되면, 일정 기간동안 DB에 대한 연결을 유지할 수 있다. 2) 트랜잭션 처리     - 트랜잭션을 관리하고, DB 작업을 일관성 있게 처리한다. 3) 자원 할당 및 해제     - DB 연결에 필요한 자원을 할당하고, 사용이 끝나면 이를 해제한다. 4) 보안 및 권한 권리     - DB 접근하기 위한 보안 및 권한 정보를 관리한다.   2. Commit에 대해서 설명해주세요.*트랜잭션 내에서의 변경사항을 DB에 영구적으로 적용하고, 트랜잭션을 종료하는 작업 [시기]트랜잭션이 완..
[백준] 1325번 효율적인 해킹 _ Python
·
Algorithms/Graph
https://www.acmicpc.net/problem/1325 [초기 접근 방법] - '한 번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터 번호' 출력 - 각 노드, 즉 각 컴퓨터에서 bfs 탐색을 하며 그 깊이를 측정하고 가장 깊은 노드를 출력하면 오름차순으로 출력한다. [생각] - 단순한 그래프 탐색 문제 [코드] # 풀이 시간 : 15분 # 시간복잡도 : O(N+e) # 공간복잡도 : O(N+e) # 참고 : - # Python3는 시간초과 from collections import deque def bfs(k): visited = [False] * (N + 1) # 계속 초기화 필요 cnt = 0 # 연결된 간선 갯수 세기 q = deque() q.append(k) visited[k] = Tr..
[백준] 1600번 말이 되고픈 원숭이 _ Python
·
Algorithms/Graph
https://www.acmicpc.net/problem/1600 [초기 접근 방법(x)] 1. 일단 도보로만 이동한다고 생각하고, 목적지까지의 이동횟수를 구한다. (bfs) 2. 목적지에서 K번 '말'의 방향으로 뛰어본다. (dfs) - visited[][] 값이 있을 경우, 즉 도보로 갈 수 있는 경우 result 값을 갱신한다. [생각] 위의 접근이 틀린 이유는, 중간에 '말' 동작을 실행할 수도 있다는 것이다. 저 방법대로라면, 끝에서밖에 '말' 동작을 실행한다. 아예 틀린 접근으로 시간을 소비하고, 블로그를 참조하여 다시 풀이했다. 아.. 그리고 python에서 3차원 배열을 정의하는데, 개념을 잡느라 시간을 많이 썼다. lst = [[[0 for _ in range(depth)] for _ i..
[백준] 5547번 일루미네이션 _ Python
·
Algorithms/Graph
[초기 접근 방법] 1. 정육각형이므로, 6개의 지역에 접근해야 한다. - 짝수 행, 홀수 행에 따라 육각형의 탐색 범위가 달라진다. 2. 그런데 닫힌 구역을 어떻게 판단하지? - 이 부분에 대해서 visited[i][j] == 6 일 경우로 판단하자 라고 생각했지만, 닫힌 구역내의 육각형이 여러 개일 경우 불가한다.. [생각] 예전에 팀프로젝트로 미로찾기 알고리즘을 한 적이 있었는데, 기능 중 하나로 '닫힌 구역에 대해서 미로가 더 이상 탐색하지 않게끔 한다.' 가 떠올랐다. 각설하고, 생각을 해보았지만 닫힌 구역에 대한 판단에 대한 알고리즘이 떠오르지 않아 블로그를 참조했다. 1. 한 번에 바깥쪽의 공간 지역 전체 탐색하기 위해, 상하좌우 4개의 구역을 1칸씩 늘려준다. 2. 주변 6개의 인접 구역..