Python

·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..
·Python
N = int(input())Alst = list(map(int, input().split()))M = int(input())Blst = list(map(int, input().split()))for i in range(len(Blst)): if Blst[i] in Alst: print(1) else: print(0) 일단 정렬 문제라서 위와 같이 작성하면 안될 것 같았지만, 혹시나해서 테스트해봤더니 역시나 시간 초과 오류로 틀렸다.적절한 정렬 알고리즘을 사용해야 시간을 줄일 수 있는 것 같았음 일단 찾아보니 리스트에서 in 연산자를 사용하는 것을 리스트에서 특정 값을 찾을 때 선형 탐색을 하며, 시간 복잡도는 O(N)으로서 위 코드를 실행할 때의 전체 시간 복잡도는 O(M*N)이다. 문제에서..
·Python
import sysN = int(input())put = sys.stdin.read()lst = sorted(list(map(int, put.split())), reverse=False)for k in lst: print(k) 숏코딩으로 한줄로 입력 + 리스트화 + 오름차순 정렬까지 한 뒤, 마지막에 for문으로 오름차순으로 정렬되어 있는 단어들을 순서대로 출력해주는 코드이다.매우 쉬운 문제!
·Python
이 문제도 순탄하게 네 가지 기능 다 처리할 수 있을 줄 알았는데, 세 번째 기능인 최빈값(mode) 구하는 과정을 구성하는 것이 다소 까다로웠다. 아래는 내가 처음에 작성했던 최빈값 코드 def mode(): arr = [0]*(max(data)+1) # 숫자 출연 횟수 리스트 (이 리스트의 인덱스i 가 출연 숫자와 동일함) for i in data: arr[i] += 1 modes = [i for i, c in enumerate(arr) if c == max(arr)] # i는 인덱스이자 출연 숫자를 의미, c는 해당 숫자의 출현 횟수 if len(modes) > 1: # 최빈값이 여러 개일 경우 두 번째로 작은 값 반환 modes.s..
여백 ::
'Python' 카테고리의 글 목록 (4 Page)