본문 바로가기
반응형

프로그래밍/알고리즘 & 자료구조73

[프로그래머스] 최소 직사각형 with 파이썬 리스트 안의 값들을 비교해 최대값을 찾는 것으로 1. 하나씩 비교하여 변수에 업데이트하거나 2. 최대값, 최소값 함수를 사용하거나, 3. heapq를 사용할 수 있다. 1. 하나씩 비교하여 변수에 업데이트 def solution(s): w,h=0,0 # 최대값을 비교하고 최대값에 해당하면 저장하는 변수 for x, y in s: if x < y : x, y = y, x if w 2023. 12. 19.
[프로그래머스] 카펫 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 파이썬 1. set()을 통해 차집합 구하기 : 공통요소 제거 def solution(n, l, r): r = set(r) - set(l) l = set(l) - set(r) for i in r: if i - 1 in l: l.remove(i - 1) elif i + 1 in l: l.remove(i + 1) return n - len(l) 여분의 체육복을 가져온 학생이 체육복을 도둑맞았을 경우, 빌려줄 체육복이 없어지기 때문에 reserve와 lost에서 지워준다. 2023. 4. 24.
[프로그래머스] 모의고사 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 파이썬 이진탐색은 1. "찾는 값"이 무엇인지를 파악해 return 값으로 설정하고, 이를 기준으로 start, end, mid를 설정한다. 2. 찾는 값이 명확한 경우, 재귀함수를 통해 찾고, 찾는 값이 명확하지 않은 경우(trial and error 하면서 찾아야 하는 경우), while 반복문을 통해 찾는다. 이진탐색의 조건 1. 정렬 2. start, end 설정 -> mid 3. 재귀 or while : 찾는 값이 명확하냐 or 명확x 4. 종료조건 : st=end or st 2023. 4. 22.
[프로그래머스] 최소 직사각형 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.
반응형