[프로그래머스] 카펫 with 파이썬
ⓐ 총 너비와 가로, 세로길이의 관계는 배수, 약수 관계이다. ⓑ 기준(미지수)를 뭘로 설정할지 정하기 : 총너비의 가로세로, brown의 가로세로, yellow의 가로세로 중 선택 1. 나머지와 몫을 사용. 총 너비의 가로와 세로 길이를 기준으로 삼음 def solution(b, y): size = b + y for i in range(3, b): # 샌드위치 구조가 되려면 세로 3개가 필요 if size % i == 0: j = size // i if (i - 2)(j - 2) == y: return sorted([i, j], reverse=True) 2. while 문으로 약수관계 구하기. yellow의 가로와 세로 길이를 기준으로 def solution2(b, y): def brown(v, h):..
2023. 4. 25.
[프로그래머스] 모의고사 with 파이썬
나머지(%)를 활용하여 주기적으로 반복되는 경우를 처리할 수 있다. def solution(a): n1 = [1, 2, 3, 4, 5] n2 = [2, 1, 2, 3, 2, 4, 2, 5] n3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] r = [0] * 3 for idx, i in enumerate(a): if i == n1[idx % len(n1)]: # 리스트의 인덱스를 통해 특정 조건이 만족한 경우의 수를 누적 r[0] += 1 if i == n1[idx % len(n2)]: r[1] += 1 if i == n1[idx % len(n3)]: r[2] += 1 k = [] for idx, i in enumerate(r): if i == max(r): k.append(idx + 1) ..
2023. 4. 23.
[프로그래머스] 최소 직사각형 with 파이썬
s = [[60, 50], [30, 70], [60, 30], [80, 40]] ## 답 : 4000 1. max(), min() 이용 def solution(s): row = [] col = [] for i in s: row.append(max(i)) col.append(min(i)) return max(row) * max(col) 2. for 반복문으로 2차원 리스트에서 값 꺼내오기 def solution2(s): row = 0 col = 0 for a, b in s: if a < b: a, b = b, a row = max(row, a) col = max(col, b) return row * col
2023. 4. 21.