[백준][Python] 6593번 상범 빌딩 - 코팩
·
백준/DFS&BFS
https://www.acmicpc.net/problem/6593 6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net 풀이 BFS 알고리즘을 사용해서 문제를 풀어주었습니다. 3차원 리스트이기에 주의해서 짜주시면 됩니다. 코드 # 6593번 상범 빌딩 import sys from collections import deque dxyzs = ((0,0,1), (0,0,-1), (1,0,0), (-1,0,0), (0,1,0), (0,-1,0)) while True: L, R, C = map(int, sys.stdin.read..
[백준][Python] 1253번 좋다 - 코팩
·
백준/투 포인터
https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 풀이 두 수의 합을 이용하기에 투 포인터 알고리즘인 것을 알 수 있다. for문으로 리스트 안에 특정 숫자를 뽑아주고 뽑은 특정 숫자를 제외한 숫자들의 합으로 뽑은 특정 숫자를 표현할 수 있으면 좋다(GOOD) 개수 1 추가. 코드 # 1253번 좋다 n = int(input()) li = sorted(list(map(int, input().split()))) ans = 0 # 두 수의 합을 표현해줄 숫자를 순차적으로 뽑아준..
[백준][Python] 11653번 소인수분해 - 코팩
·
백준/구현
https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 풀이 소인수분해를 구현해주는 문제이다. 나누는 값을 1씩 추가해서 더 이상 나눌 수 없을 때까지 나눠준다. 코드 # 11653번 소인수분해 n = int(input()) ans = [] def calc(c_n): for i in range(2, c_n): if n % i == 0: c_n = c_n // i ans.append(i) break return c_n if n != 1: while True: t = calc(n) if n == t: ans.append(n) break n = t print("\n".join..
[백준][Python] 14921번 용액 합성하기 - 코팩
·
백준/투 포인터
https://www.acmicpc.net/problem/14921 14921번: 용액 합성하기 홍익대 화학연구소는 다양한 용액을 보유하고 있다. 각 용액은 -100,000,000부터 100,000,000사이의 특성 값을 갖는데, 같은 양의 두 용액을 혼합하면, 그 특성값은 두 용액의 특성값의 합이 된다. 당신 www.acmicpc.net 풀이 투 포인터 알고리즘을 이미 학습한 사람이라면 문제없이 풀 수 있을 것이다. 투포인터 알고리즘 블로그 글: https://sunghyun98.tistory.com/25 [알고리즘] 투 포인터 투 포인터 알고리즘은 배열에서 두 개의 포인터를 사용하여 특정 목표를 달성하기 위한 기법입니다. 일반적으로 정렬된 배열에서 특정 조건을 충족하는 요소를 찾거나 연속된 서브 배열..
[백준][Python] 3649번 로봇 프로젝트 - 코팩
·
백준/투 포인터
https://www.acmicpc.net/problem/3649 3649번: 로봇 프로젝트 각 테스트 케이스마다 한 줄에 하나씩, 구멍을 완벽하게 막을 수 있는 두 조각이 없다면 'danger'를 출력한다. 막을 수 있는 경우에는 'yes ℓ1 ℓ2'를 출력한다. (ℓ1 ≤ ℓ2) 정답이 여러 개인 경우에 www.acmicpc.net 풀이 주어진 레고들 중 두 개의 길이 합이 구멍 크기와 같을 수 있는지 확인하는 문제이기에 투포인터 알고리즘을 적용했다. 코드 # 3649번 로봇 프로젝트 import sys while 1: try: x = int(input()) x *= 10000000 # 단위가 센티미터이기에 나노미터로 통일. r = int(input()) lego = [int(sys.stdin.rea..
[백준][Python] 1005번 ACM Craft - 코팩
·
백준/위상 정렬
https://www.acmicpc.net/problem/1005 1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N과 건물간의 건설순서 규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net 풀이 문제를 읽고나서 위상정렬 알고리즘임을 어렵지않게 알 수 있었다. 최소 건설 시간을 측정하기 위해 다이내믹 프로그래밍을 사용할 것이다. 건물 완성까지의 최소 시간을 구하기 위해서는 다음과 같은 말이 성립된다. - 선행 건설 되어야하는 건물이 존재한다면 후행 건설을 실시 할 수 없다. - 이를 위해서는 선행 건설 되어야하는 건물이 모두 건설되어야 한다는 얘기이다. - 선행 건설이 없는 건물..
[백준][Python] 20040번 사이클 게임 - 코팩
·
백준/분리 집합
https://www.acmicpc.net/problem/20040 20040번: 사이클 게임 사이클 게임은 두 명의 플레이어가 차례대로 돌아가며 진행하는 게임으로, 선 플레이어가 홀수 번째 차례를, 후 플레이어가 짝수 번째 차례를 진행한다. 게임 시작 시 0 부터 n − 1 까지 고유한 www.acmicpc.net 풀이 사이클이 생기는지에 대해서 확인해보는 문제. - BFS는 간선을 추가한 그래프를 처음부터 계속 탐색해야하기에 부담이 크다. - 분리 집합을 사용해서 사이클이 생기는지 확인하도록 했다. 분리집합 알고리즘 https://sunghyun98.tistory.com/256 [알고리즘] 분리 집합 분리 집합(Disjoint Set, Union-Find)은 많은 알고리즘 코딩 테스트에서 중요한 자료..
[백준][Python] 2473번 세 용액 - 코팩
·
백준/투 포인터
https://www.acmicpc.net/problem/2473 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 풀이 투포인터 문제인 용액 시리즈이다. 3개의 용액의 값을 합한 값이 최대한 0에 가깝게 나오도록 용액을 고른 뒤. 값을 오름차순으로 출력하는것이 문제의 목표이다. 1개의 용액은 완전탐색을 통해서 뽑고 나머지 2개의 용액은 투 포인터로 뽑아줄 것이다. 투 포인터 알고리즘 https://sunghyun98.tistory.com/25 [알고리즘] 투 포인터 투 포인터 알고리즘은 ..
개발자 성현