Algorithm(91)
-
[BOJ] 백준 1341 사이좋은 형제 python
수의 이진표현에 대한 문제가 되겠다. import matha,b = map(int,input().split())def f(a,b): if a == 0 and b == 0: return -1 elif a == 0 and b != 0: return "-" elif a == 1 and b == 1: return "*" #이제 비트마스킹을 활용해야함 else: for i in range (1,64): t = a * ((2 ** i) - 1) // b if b * t == a * ((2 ** i) - 1): x = format(t, 'b') #주어진 숫자를 2진수로 변환해..
2024.06.03 -
[BOJ] 백준 1709 타일 위의 원 python
N = int(input())R = N // 2 #반지름이 되겠다def f(n): x,y = 0,n-1 cnt = 0 dx,dy = [1,0,1], [0,-1,-1] while x != y: for i in range (0,3): xx,yy = x + dx[i], y + dy[i] if xx ** 2 + yy ** 2 n ** 2: cnt += 1 x,y = xx, yy break return 8 * cnt + 4print(f(R)) 반지름을 어떻게 활용할지에 대한 중요한 문제가 될 것 같다.
2024.06.02 -
[BOJ] 백준 16234 인구이동 python
그래프이론을 좀 더 공부해보다가 이런 문제를 발견해서 바로 덥석 풀어봤는데 생각보다 걸리긴했네요. from collections import dequeimport syssys.setrecursionlimit(10**6)input = sys.stdin.readlineN, L, R = map(int, input().split())graph = []for _ in range (0,N): a = list(map(int,input().split())) graph.append(a)#L이상 R이하인 경우에는 모두 열림dx,dy = [0,0,1,-1],[1,-1,0,0]def bfs(mapp,cnt): visited = [[False for _ in range(0, N)] for _ in rang..
2024.05.29 -
[BOJ] 백준 11725 트리의 부모 찾기 python
생각보다는 쉽게 풀었던 문제인데, from collections import dequeN = int(input())gp = [[] for _ in range (0,N+1)]for _ in range (0,N-1): a,b = map(int,input().split()) gp[a].append(b) gp[b].append(a)depth = [[] for _ in range (0,N+1)]depth[1] = (1,1)deq = deque()check = [False for _ in range (0,N+1)]new_graph = [[] for _ in range (0,N+1)]deq.append((1,1))while deq: x = deq.popleft() x,y = x[0], ..
2024.05.18 -
[BOJ] 백준 1198 삼각형으로 자르기 python
말이 어렵게 쓰여있지만, 결국 해답은 뭐냐면 다각형의 세 점을 이어서 만들 수 있는 삼각형 중 가장 넓이가 큰 것을 찾으시오 라는 문제가 되겠습니다. 여기서, 아이디어로서 사용되는 것은 신발끈 정리입니다. https://ko.wikipedia.org/wiki/%EC%8B%A0%EB%B0%9C%EB%81%88_%EA%B3%B5%EC%8B%9D 신발끈 공식 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 신발끈 공식(―公式)은 좌표평면 상에서 꼭짓점의 좌표를 알 때 다각형의 면적을 구할 수 있는 방법이다. 다각형의 각 꼭짓점의 좌푯값을 교차하여 곱하는 모ko.wikipedia.org 좌표 평면에 점의 좌표가 주어져 있을 때 다각형의 넓이를 구할 수 있게 도와주는 공식이예요. 이를 활용해..
2024.05.13 -
[BOJ] 백준 20920 영단어 암기는 괴로워
from collections import defaultdictimport sysinput = sys.stdin.readlineN,M = map(int,input().split())cnt = defaultdict(int)length = defaultdict(int)for _ in range (0,N): a = input().rstrip() if len(a) >= M: cnt[a] += 1 length[a] = len(a)words = []dd = list(cnt.keys())for word in dd: words.append([word, cnt[word], length[word]])words.sort(key = lambda x:(-x[1],-x[2],x[0]))..
2024.05.12