본문 바로가기

코딩테스트 연습 복기용

230222 코딩 연습

브루스포스

 

사용 이유 : 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