1. 의상문제(프로그래머스)
https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
def solution(clothes):
closet = {}
# 의상을 종류별로 분류
for item, category in clothes:
if category in closet:
closet[category] += [item]
else:
closet[category] = [item]
# 경우의 수 계산
answer = 1
for category in closet:
answer *= (len(closet[category]) + 1) # 각 종류별 의상 개수 + 1 (입지 않는 경우)
answer -= 1 # 아무 의상도 입지 않는 경우를 제외
print("경우의 수:", answer)
return answer
# 입력값
clothes = [
["yellow_hat", "headgear"],
["blue_sunglasses", "eyewear"],
["green_turban", "headgear"]
]
# 함수 호출
solution(clothes)
2. 병합 정렬
array_a = [1, 2, 3, 5]
array_b = [4, 6, 7, 8]
def merge(array1, array2):
# 이 부분을 채워보세요!
return
print(merge(array_a, array_b)) # [1, 2, 3, 4, 5, 6, 7, 8] 가 되어야 합니다!
print("정답 = [-7, -1, 5, 6, 9, 10, 11, 40] / 현재 풀이 값 = ", merge([-7, -1, 9, 40], [5, 6, 10, 11]))
print("정답 = [-1, 2, 3, 5, 10, 40, 78, 100] / 현재 풀이 값 = ", merge([-1,2,3,5,40], [10,78,100]))
print("정답 = [-1, -1, 0, 1, 6, 9, 10] / 현재 풀이 값 = ", merge([-1,-1,0], [1, 6, 9, 10]))
오답
def merge(array1, array2):
array_c = []
i, j = 0, 0
for i in range(len(array_b)) :
for j in range(i) :
if array_a[i] < array_b[j] :
array_c.append(array_a[i])
i += 1
else :
array_c.append(array_b[j])
j += 1
print(array_c)
# 이 부분을 채워보세요!
return array_c
print(array_c)
array_a = [1, 2, 3, 5]
array_b = [4, 6, 7, 8]
def merge(array1, array2):
array_c = []
i, j = 0, 0
while i < len(array1) and j < len(array2) :
if array1[i] < array2[j] :
array_c.append(array1[i])
i += 1
else :
array_c.append(array2[j])
j += 1
return array_c
print("정답 = [-7, -1, 5, 6, 9, 10, 11, 40] / 현재 풀이 값 = ", merge([-7, -1, 9, 40], [5, 6, 10, 11]))
print("정답 = [-1, 2, 3, 5, 10, 40, 78, 100] / 현재 풀이 값 = ", merge([-1,2,3,5,40], [10,78,100]))
print("정답 = [-1, -1, 0, 1, 6, 9, 10] / 현재 풀이 값 = ", merge([-1,-1,0], [1, 6, 9, 10]))
여기 까지 작성할 경우
정답 = [-7, -1, 5, 6, 9, 10, 11, 40] / 현재 풀이 값 = [-7, -1, 5, 6, 9, 10, 11]
정답 = [-1, 2, 3, 5, 10, 40, 78, 100] / 현재 풀이 값 = [-1, 2, 3, 5, 10, 40]
정답 = [-1, -1, 0, 1, 6, 9, 10] / 현재 풀이 값 = [-1, -1, 0]
길이 달라서 끝까지 안들어간다.
array_a = [1, 2, 3, 5]
array_b = [4, 6, 7, 8]
def merge(array1, array2):
result = []
array1_index = 0
array2_index = 0
while array1_index < len(array1) and array2_index < len(array2):
if array1[array1_index] < array2[array2_index]:
result.append(array1[array1_index])
array1_index += 1
else:
result.append(array2[array2_index])
array2_index += 1
while array1_index < len(array1):
result.append(array1[array1_index])
array1_index += 1
while array2_index < len(array2):
result.append(array2[array2_index])
array2_index += 1
print(merge(array_a, array_b))
print("정답 = [-7, -1, 5, 6, 9, 10, 11, 40] / 현재 풀이 값 = ", merge([-7, -1, 9, 40], [5, 6, 10, 11]))
print("정답 = [-1, 2, 3, 5, 10, 40, 78, 100] / 현재 풀이 값 = ", merge([-1,2,3,5,40], [10,78,100]))
print("정답 = [-1, -1, 0, 1, 6, 9, 10] / 현재 풀이 값 = ", merge([-1,-1,0], [1, 6, 9, 10]))
3. 스택
push(data) : 맨 앞에 데이터 넣기
pop() : 맨 앞의 데이터 뽑기
peek() : 맨 앞의 데이터 보기
isEmpty() : 스택이 비었는지 안비엇는지 여부 반환해주기
stack = [] # 빈 스택 초기화
stack.append(4) # 스택 push(4)
stack.append(3) # 스택 push(3)
top = stack.pop() # 스택 pop
print(top) # 3!
'코딩테스트' 카테고리의 다른 글
하루 코테 3개 풀기 - 10일 차 (0) | 2024.12.19 |
---|---|
하루 코테 3개 풀기 - 9일차 (0) | 2024.12.18 |
하루 코테 3개 풀기 - 7일차 (2) | 2024.12.17 |
하루 코테 3개 풀기 - 6일차 (1) | 2024.12.16 |
하루 코테 3개 풀기 - 5일차 (1) | 2024.12.14 |