[백준_python] 캠핑 || 4796
·
🎯PS
www.acmicpc.net/problem/4796 4796번: 캠핑입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다.www.acmicpc.net #캠핑 import sys cnt = 1 while True: day = 0 l, p, v = map(int, sys.stdin.readline().split(' ')) if l ==0 and p ==0 and v ==0: break day += l * (v//p) + min(v%p, l) print("Case %d: %d" %(cnt, day)) cnt += 1 휴가 v일 중에 l일 x v//p만큼 캠핑을 ..
[백준_python] 상근이의 여행 || 9372 (최소 신장 트리)
·
🎯PS
www.acmicpc.net/problem/9372 9372번: 상근이의 여행첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net위 예제 입력을 보고 그래프를 따라 그려보면, 모든 정점들이 이어져 있다. 신장 트리(spanning tree)가장 적은 간선을 가진 그래프이다.n개의 정점을 가지는 그래프의 최소 간선의 개수는 n-1개이고, 이러한 트리 형태를 뜻한다. - 하나의 그래프 속에는 많은 신장 트리가 존재할 수 있다.(DFS와 BFS를 이용하여 찾을 수 있다)- 모든 정점들이 연결되어 있어야 하며,..
[백준_python] 연결 요소의 개수 || 11724 (시간초과, 런타임에러(recursionerror)
·
🎯PS
www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주www.acmicpc.netDFS를 이용할까 했는데, BFS로 해주기 시작했다. 코드를 짜면서 바로 전에 풀었던 DFS, BFS 관련 문제들과 다를게 없는 것 같아서 다행이라고 생각하면서 풀어주었다. 똑같이 큐로 시작 정점을 저장해주며, 방문하지 않고 간선이 이어준 곳을 방문 체크를 해주며 큐에 값을 넣어주는 방식으로 함수를 작성을 해주었다. 그 후, 연결 요소를 세어주는 것이다보..
[백준_python] 바이러스 || 2606
·
🎯PS
www.acmicpc.net/problem/2606 2606번: 바이러스첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어www.acmicpc.net알고리즘 분류에 깊이 우선 탐색과 너비 우선 탐색이 있었는데, 나는 네트워크라는 단어를 읽자마자 DFS보다는 BFS로 구현을 하고 싶다는 생각을 하게 되었다.!1260을 풀면서 사용했던 bfs를 참고하면서 문제를 풀었는데, 무한 루프에 빠져서 한동안 헤어나올 수가 없었다.. 정말 똑같이 적었는데 왜 무한 루프에 빠졌는지 모르겠다. 다시 지우고 작성을 해서 빠져나오긴 했지만,, 아직도 이유를 모르겠다 ㅠ 다음에도 무한 루프..
[백준_python] DFS와 BFS || 1260
·
🎯PS
www.acmicpc.net/problem/1260 1260번: DFS와 BFS첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사www.acmicpc.net깊이 우선 탐색(DFS_Depth-First Search): 루트 노드를 모두 완벽하게 탐색을 한 후 다음 분기로 넘어가는 방법 모든 노드를 방문 하고자 하는 경우에 이용 순환 호출 혹은 스택 이용너비 우선 탐색(BFS_Breadth-First Search): 루트 노드에서 인접한 노드부터 먼저 탐색하는 방법두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 사용 재귀적..
[백준_python] 늑대와 양 || 16956
·
🎯PS
www.acmicpc.net/problem/16956 16956번: 늑대와 양크기가 R×C인 목장이 있고, 목장은 1×1 크기의 칸으로 나누어져 있다. 각각의 칸에는 비어있거나, 양 또는 늑대가 있다. 양은 이동하지 않고 위치를 지키고 있고, 늑대는 인접한 칸을 자유롭게 www.acmicpc.net이거 출력이 저렇게 안나와도 맞았다고 해준다.. 풀다가 아무래도 모르겠어서 다른 분들 코드를 보면서 오호 이렇게 하는거구나 하고 열심히 했는데 출력이 예제와 달라서 어쩌지,,하다가 제출했더니 맞았다고 그랬다..! ㅠㅠ(이유는 모름) 일단, 이 문제는 늑대와 양이 인접하는 지를 알아보기 위해, 늑대를 찾아 늑대의 상하좌우를 검색하며 울타리를 설치할 수도 없이 바로 양과 인접한 경우에는 0을 출력하고, 그 외에는 ..
[백준_python] 접미사 배열 || 11656
·
🎯PS
www.acmicpc.net/problem/11656 11656번: 접미사 배열첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.www.acmicpc.net먼저, 입력받은 문자열을 baekjoon, aekjoon, ekjoon, kjoon, joon, oon, on, n로 표현해주기 위해 i를 하나씩 늘려가며 해당 문자열들을 배열 속으로 넣어주었다. 그 후 sort를 이용하여 사전순 정렬이 되도록 바꿔준 후 출력이 되도록 하였다.#접미사 배열 S = input() arr = [] for i in range(len(S)): arr.append(S[i:]) arr.sort() print(*arr, sep = "\n")
[백준_python] 로프 || 2217
·
🎯PS
www.acmicpc.net/problem/2217 2217번: 로프N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하www.acmicpc.net굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다르다. 병렬로 연결하면 각가의 로프에는 모두 고르게 w(중량) / k(로프의 개수) 만큼의 중량이 걸린다. 모든 로프를 사용해야할 필요가 없다. 최대 중량을 구하는 문제이다. 모든 로프를 사용해야할 필요가 없다는 부분에서 어떻게 해야하는 거지,,라는 생각과 함께 그냥 sort( )를 해서 가장 작은 중량과 주어진 로프의 개수를 곱하는 것 외에는 ..
[백준_python] 회의실 배정 || 1931
·
🎯PS
www.acmicpc.net/problem/1931 1931번: 회의실 배정(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.www.acmicpc.net#회의실 배정 n = int(input()) #회의의 수 meeting = [] for _ in range(n): x, y = map(int, input().split(' ')) meeting.append((x, y)) meeting.sort(key = lambda x : (x[1], x[0])) cnt = 1 end = meeting[0][1] for i in range(1, n): if end > meeting[i][0]: pass else: end = meeting[i][1] cnt += 1 print(cnt)일단, 회의의 최..
[백준_python] ATM || 11399
·
🎯PS
www.acmicpc.net/problem/11399 11399번: ATM첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)www.acmicpc.net#ATM n = int(input()) person = list(map(int, input().split(' '))) person.sort() time = result = 0 for i in person: time += i result += time print(result)