728x90
반응형

2024/03/27 4

[Baekjoon 1629 / python / 실버1] 곱셈

def dac(a, b, c): # a^b % c if b == 1: return a % c elif b % 2 == 0: # b가 짝수일 때 return (dac(a, b//2, c)**2) % c else: return ((dac(a, b//2, c)**2)*a) % c a, b, c = map(int, input().split()) print(dac(a, b, c)) 분할 정복 알고리즘이 사용되며, (a ^ b) % c 의 결과를 출력하기만 하면 되는 문제이다. 그러나 주어지는 입력값이 int의 최대값인 21억 정도로 매우매우 크다. 시간 제한도 0.5초로 매우 짧기 때문에 일반적인 연산으로는 시간 초과가 뜬다. 때문에 수학 공식을 이용하여 작은 단위로 분할하여 연산 횟수를 줄여서 계산해야 한다. ..

Algorithm/Math 2024.03.27

[Baekjoon 3190 / python / 골드4] 뱀

import sys from collections import deque n = int(sys.stdin.readline()) # 보드의 크기 k = int(sys.stdin.readline()) # 사과의 개수 apple = [list(map(int, sys.stdin.readline().split())) for _ in range(k)] # 사과의 위치 l = int(sys.stdin.readline()) # 방향 전환 횟수 change = [] for _ in range(l): changeSec, changeDir = input().split() changeSec = int(changeSec) change.append([changeSec, changeDir]) # 초, 방향을 입력받되, 초는 int..

[Baekjoon 2630 / python / 실버2] 색종이 만들기

import sys n = int(sys.stdin.readline()) # 종이 길이 paper = [list(map(int, sys.stdin.readline().split())) for _ in range(n)] # 종이와 색깔 result = [] # 결과를 담을 변수 def cut(x, y, n): # 행, 열 시작지점과 종이 길이를 입력받는다 color = paper[x][y] # 종이 색깔 비교를 위한 색깔 저장 for i in range(x, x + n): for j in range(y, y + n): if color != paper[i][j]: # 다른 색깔이 존재할 경우 종이를 4등분한다 cut(x, y, n//2) cut(x+n//2, y, n//2) cut(x, y+n//2, n//..

728x90
반응형