문제1051번: 숫자 정사각형문제 이해N * M 크기의 직사각형 (N : 세로, M : 가로)꼭짓점에 쓰여 있는 수가 모두 같고, 크기가 가장 큰 정사각형을 찾아라풀이직사각형의 숫자를 2차원 리스트로 저장한 후 모든 숫자를 순회하며, 조건에 맞는 정사각형을 찾도록 구현해 보자.시간제한이 2초이며, N, M 2차원 리스트 형태로 숫자를 입력result (반환해 줄 직사각형의 크기)를 1로 초기화첫 숫자부터 차례로 순회가로로 진행하며 같은 숫자가 있는지 확인같은 숫자가 없다면, 다음 숫자로 넘어감 (M보다 작을 때까지 진행)같은 숫자가 있다면, 길이를 구해 세로 아래에 같은 숫자가 존재하는지 확인 (N보다 작을 경우)result를 갱신하며 최댓값을 반환코드left_top을 지정한 뒤 해당 숫자로 이루어진 정..
문제1049번: 기타줄문제 이해끊어진 기타 줄을 새로 구매끊어진 기타 줄 개수 N, 기타 줄 브랜드 M기타 줄 6개 패키지 가격과 낱개(1)로 살 때의 가격이 주어짐적어도 N개의 기타 줄을 사기 위한 최소 가격은?풀이최소 가격을 구하는 것이므로 6개의 최소 가격과 1개의 최소 가격 이외에는 필요가 없음기타 줄 6개의 최소 가격과 기타 줄 1개의 최소 가격을 구해 N개를 구매하기 위한 가격 도출기타 줄 6개의 최솟값과 1개의 최솟값을 각각 구함6개 6개 > 1개 * 6이면, 6개를 (N // 6) 개만큼 구매(N % 6) 개의 가격이 싼 걸로 구매, 1개 * (N % 6) vs 6개코드기타 줄의 최대 가격이 1000이므로 최솟값을 1001로 설정import sysinput = sys.stdin.readli..
문제1026번: 보물문제 이해길이가 N인 정수 배열 A와 BS = A[0] × B[0] + ... + A[N-1] × B[N-1]S의 값을 최소화하기 위해 A의 수 재배열, B의 수는 재배열 XA의 수를 재배열하나 A, B의 수를 재배열하나 결과는 달라지지 않음A의 수는 모든 B의 수와 연산이 될 수 있기 때문풀이B의 가장 큰 수를 A의 가장 작은 수와 곱하게 만들어 최솟값 계산A와 B를 모두 조작해도 관계없기 때문에 A와 B를 정렬하여 계산A를 내림차순으로 정렬B를 오름차순으로 정렬A와 B의 각 원소의 곱을 계산코드import sysinput = sys.stdin.readlinen = int(input())A = sorted(list(map(int, input().split())), reverse=Tr..
문제17299번: 오등큰수문제 이해크기가 N인 수열 A = A1, A2, A3, ..., AN이고, 각 원소 Ai에 대한 오등큰수 NGF(i)를 구함Ai가 수열 A에 등장한 횟수 = F(Ai)Ai의 오등큰수는 오른쪽에 있고 수열 A에서 등장한 횟수가 F(Ai) 보다 큰 수 중 가장 왼쪽에 있는 수, 없으면 -1문제 예시 설명N = 7 # 수열의 크기A = [1, 1, 2, 3, 4, 2, 1] # 크기가 N인 수열 AF(1) = 3, F(2) = 2, F(3) = 1, F(4) = 1 # 각 숫자가 등장한 횟수A1 = 1, 오른쪽에 F(1)보다 큰 수는 없으므로 -1A2 = 1, 오른쪽에 F(1)보다 큰 수는 없으므로 -1A3 = 2, 오른쪽에 F(2)보다 큰 수는 1A4 = 3, 오른쪽에 F(3)..