전체 글

·Python
시간 제한이 굉장히 타이트한 문제이다.처음엔 매번 num에서 가능한 제곱수를 찾아 빼는 방식으로 작동시켰었는데, 이는 큰 수에 대해 매우 비율적이기 때문에 dp 배열을 만들어 각 숫자를 만들 수 있는 제곱수의 최소 개수를 저장하도록 작성하였다. 동적 계획법(DP) ?- 각 숫자를 만들 수 있는 최소 제곱수의 개수를 저장하고, 그 값을 이전에 계산된 결과를 활용해 구하는 방법 import mathnum = int(input())dp = [float('inf')]*(num + 1)dp[0] = 0 # 0을 만들기 위한 최소 제곱수 개수는 0for i in range(1, num + 1): for j in range(1, int(math.sqrt(i))+ 1): dp[i] = min(dp[i..
·Python
N, M = map(int, input().split())arr= [[0 for _ in range(M)] for _ in range(N)] # 2차원 배열 for i in range(N): temp = list(map(int, input().strip())) for j in range(M): arr[i][j] = temp[j]final = 1max_len = min(N, M) # 정사각형의 최대 길이 (둘 중 더 짧은 것)for length in range(1, max_len): for i in range(N-length): for j in range(M-length): a = arr[i][j] b = arr[i + len..
·Python
현재 총 네 개의 직사각형을 입력 받고 각 행마다 두 점의 좌표를 입력 받고 있다.행마다 입력받는 좌표들을 점 좌표가 아니라 이것이 직사각형을 구성하는 1x1인 하나의 박스 좌표들의 집합이라고 생각하고, 좌표평면을 행렬 표라고 생각하면 쉽게 풀 수 있다. arr = [[0]*100 for _ in range(101)]cnt = 0for i in range(4): x1, y1, x2, y2 = map(int, input().split()) for i in range(x1, x2): for j in range(y1, y2): if arr[i][j] == 0: arr[i][j] += 1 cnt += 1print(c..
·Python
이 문제는 3차원 격자 구조물의 겉넓이를 구하는 문제이다.2차원 배열이 처음에 주어지는데 여기서 각 칸의 값은 해당 위치에 쌓인 블록의 높이를 나타냄어려워 보여도 겉넓이의 성질을 이해하면 풀 수 있다. - 정육면체로 이루어져 있기 때문에, 해당 문제에서 겉넓이는 6면 모두 구할 필요 없이 왼쪽 오른쪽 아래쪽 이렇게 3면만 구한 뒤에 2배를 하면 된다.- 그런데 여기서 지금 바닥면인 base는 N*M으로 이미 주어져있기 때문에 사실상 두 개의 면만 구하면 끝!- 이를 쉽게 이해하려면 정사영 투영을 떠올리면 쉬움 import sysN, M = map(int, sys.stdin.readline().split())arr = [list(map(int, sys.stdin.readline().split())) for..
·Python
import sysfrom itertools import combinationsT = int(input())def length(arr, distance): # 모든 변의 길이를 측정해서 오름차순 만들고 변/대각선 구분하기 perm = list(combinations(arr , 2)) for a , b in perm: distance.append((b[0]-a[0])*(b[0]-a[0]) + (b[1]-a[1])*(b[1]-a[1])) distance.sort() if distance[0] == distance[1] == distance[2] == distance[3] and distance[4] == distance[5]: print(1) else: p..
·Blockchain
1. 함수아래와 같이 파이썬으로 구출하는 블록체인 네트워크에서 '암호해시 함수', '거래 내역 저장함수', '채굴 함수' 등을 만들어서 활용해볼 것이다.import timeimport datetimeimport hashlibimport jsonimport requests# 블록 해시 함수def hash(block): # hashes a block block_string = json.dumps(block, sort_keys=True).encode() # hash 라이브러리로 sha256 사용 return hashlib.sha256(block_string).hexdigest()# 거래 내역 저장 함수def new_transaction(self, sender, recipient, amou..
여백 ::
The Orbit of Midnight Oil