Algorithm/Baekjoon Online Judge
-
[BOJ] 1018번: 체스판 다시 칠하기Algorithm/Baekjoon Online Judge 2022. 3. 22. 22:24
https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net Python3 def coloring(color, str_h, str_w): cnt = 0 for h in range(str_h, str_h+8): for w in range(str_w, str_w+8): if h % 2 == 0: if w % 2 == 0: if color != board[h][w]: cnt += 1 else: if color == board[h][w]: cnt += 1 ..
-
[BOJ] 7568번 : 덩치Algorithm/Baekjoon Online Judge 2022. 3. 21. 22:54
https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net Python3 if __name__ == '__main__': N = int(input()) persons = [] for _ in range(N): persons.append(tuple(map(int, input().split()))) sizes = [1] * N for i in range(N-1): for j in range(i+1, N): w1, h1 = persons[i] w2..
-
[BOJ] 2231번: 분해합Algorithm/Baekjoon Online Judge 2022. 3. 21. 22:21
https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net Python3 if __name__ == '__main__': num = int(input()) has_num = False for i in range(1, num, 1): dst_sum = i dst_num = i while dst_num >= 10: dst_sum += dst_num % 10 dst_num //= 10 dst_sum += dst_num if dst_..
-
[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") 문제에는 쓰여져 있지 않지만 피타고라스의 정리를 이용한 문..