브루스포스
사용 이유 : n 수가 적음, n^3 해도 시간안에 가능할 때, 모든 경우의 수 하나하나 찾아서 푸는 것 (그냥 단순 코딩)
n,m = map(int,input().split(' '))
card = list(map(int,input().split(' ')))
# 초기화 시키기
card.sort()
short3Card = card[0] + card[1] + card[2]
# 3개의 함수 합을 구하는 식 만들기
def sumCard(one, two, three):
return one + two + three
# 이전 최고 카드보다 현재 들어간 카드가 더 크다면 새로운 카드로 바꾸기
for i in range(len(card)):
for j in range(i+1,len(card)):
for k in range(j+1,len(card)):
# print(m, sumCard(card[i], card[j], card[k]))
if m >= sumCard(card[i], card[j], card[k]):
if short3Card < sumCard(card[i], card[j], card[k]) :
short3Card = sumCard(card[i], card[j], card[k])
print(short3Card)
1652 랜선자르기
이분탐색 연습, '임의로 자른 선을 각 선에 가져다 대면서 비교' : 이 생각을 해보기
cnt = n 일 때 어떻게 빠져나올것인가 고민? 계속 예시를 넣는데 -1된 값이 return 됨
해결 if 문을 밖으로 빼니 해결됨 (순간적으로 프로그램 동작을 착각했음)
k, n = map(int,input().split(' '))
lines = [int(input()) for i in range(k)]
start = 1
end = max(lines)
while (start <= end):
mid = (start + end)//2
# 각 라인 합을 더해서 n이 되나 체크
cnt = 0
for line in lines:
cnt += line // mid
if cnt >= n :
start = mid + 1
else :
end = mid -1
print(end)
이분탐색은 내일까지 두문제 정도 더 풀어보면서 익숙해지기,
다음은 퀵정렬으로 들어가자
'코딩테스트 연습 복기용' 카테고리의 다른 글
230311 문자열_ 애너그램 그룹화, 가장 긴 팰린드롬 (1) | 2023.03.12 |
---|---|
팰린드롬 문제 (0) | 2023.03.09 |
하노이 탑 문제 (0) | 2023.02.23 |
230221 코딩 연습 (0) | 2023.02.21 |