Algorithm
-
[BOJ] 2798번Algorithm/Baekjoon Online Judge 2022. 3. 21. 21:38
https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net Python3 from itertools import combinations if __name__ == '__main__': N, M = map(int, input().split()) cards = list(map(int, input().split())) nearby_sum = 0 for card in list(combinations(cards, 3)): s = s..
-
[BOJ] 11729번Algorithm/Baekjoon Online Judge 2022. 3. 20. 15:47
https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 하노이 탑 알고리즘 위와 같이 하노이 탑을 시작 장대에서 목적 장대까지 이동시키위해 원판을 움직이는 방식에 대한 알고리즘이다. 이때 한번에 한 개의 원판만을 옮길 수 있고 쌓아져 있는 원판은 항상 위의 원판이 아래 것보다 작아야한다. 원판이 1개라면, 1번 장대에서 3번 장대로 1번 원판을 움직인다. 1->3 원판이 2개라면, 1번 장대에서 2번 장대로 1번 원판을 움직인다. 1->2..
-
[BOJ] 1002번Algorithm/Baekjoon Online Judge 2022. 3. 16. 17:29
https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net Python3 import math if __name__ == '__main__': n = int(input()) for _ in range(n): x1, y1, r1, x2, y2, r2 = map(int, input().split()) distance = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) if distance == 0 and r1 == r2: print(-1) elif abs(r1 - r2) == dis..
-
[BOJ] 3053번Algorithm/Baekjoon Online Judge 2022. 3. 16. 16:42
https://www.acmicpc.net/problem/3053 3053번: 택시 기하학 첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다. www.acmicpc.net Python3 import math if __name__ == '__main__': r = int(input()) print(r*r*math.pi) print(r*r*2) 유클리드 기하학에서 원의 넓이는 pi*r**2 이고 택시 기하학에서 원의 넓이는 r*r*2이다. 따라서 이를 공식을 사용하여 코드를 작성한다. pi 값의 경우 math 라이브러리를 사용했다.
-
[BOJ] 4153번Algorithm/Baekjoon Online Judge 2022. 3. 16. 15:18
https://www.acmicpc.net/problem/4153 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net Python3 if __name__ == '__main__': while True: side = list(map(int, input().split())) if sum(side) == 0: break side.sort() if side[0]**2 + side[1]**2 == side[2]**2: print("right") else: print("wrong") 문제에는 쓰여져 있지 않지만 피타고라스의 정리를 이용한 문..
-
[BOJ] 3009번Algorithm/Baekjoon Online Judge 2022. 3. 15. 12:13
https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net Python3 code1 if __name__ == '__main__': points = [] for _ in range(3): x, y = map(int, input().split()) points.append((x, y)) for x, y in points: for x1, y1 in points: if (x, y1) not in points: print(x, y1) break 세점이 주어졌을 때 한점을 찾기 위해서는 주어진 x, y 좌표 값에 대해서 없는 x 좌표 값, y ..
-
[BOJ] 9020번Algorithm/Baekjoon Online Judge 2022. 3. 14. 13:41
https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net Python3 if __name__ == '__main__': N = int(input()) s = 10001 prime = [True] * s prime[0] = False prime[1] = False for i in range(2, int(s**0.5)+1): if prime[i]: for j in range(i*2, s, i): prime[j] = False for _ ..
-
[BOJ] 4948번Algorithm/Baekjoon Online Judge 2022. 3. 12. 17:05
https://www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net Python3 code1 - Fail def sosu(n): if n == 1: return False for i in range(2, int(n**0.5)+1): if n % i == 0: return False return True if __name__ == '__main__': while True: N = int(input()) if N == 0: break cnt = 0 for nu..