완전탐색 - LV 1

이태휘·2023년 5월 1일
0
post-custom-banner

최소 직사각형

처음에 문제 이해하는게 어려웠던 문제

  • 문제 요점
    1. 꼭 그 명함 사이즈를 고수할 게 아닌, 명함이 요리조리 가로세로 돌려버릴 수 있음을 유의하자
    2. 그렇다면 어떻게해야 최소 사이즈로 만족을 시킬까?에 대해 고민하자

2번에 대한 해답은 생각보다 간단했다 - 각 명함의 가로 세로 중 더 작은애들 중에서 젤 큰것과 더 큰애들 중에서 젤 큰것 고르면 어떻게하든 만족한다

def solution(sizes):
    large = []
    small = []
    for size in sizes:
        if size[0] >= size[1]:
            large.append(size[0])
            small.append(size[1])
        else:
            large.append(size[1])
            small.append(size[0])
    return max(large) * max(small)

이거만 생각해내면 그렇게 어려운 문제는 아니다

모의고사

  • 요점
    1. 1,2,3 3개의 배열의 반복점을 찾고, 그 반복점에 해당하는 부분들만 배열로하여 시각화하기
    2. 각 배열의 인덱스를 결과값과 비교하고, 같은 값이면 카운트 해주기
def solution(answers):
    one = [1, 2, 3, 4, 5]
    two = [2, 1, 2, 3, 2, 4, 2, 5]
    three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    answer = [0, 0, 0]
    i = 0
    while i < len(answers):
        if answers[i] == one[i%5]:
            answer[0] += 1
        if answers[i] == two[i%8]:
            answer[1] += 1
        if answers[i] == three[i%10]:
            answer[2] += 1
        i += 1
        
    result = []
    j = 0
    while j < len(answer):
        if(answer[j] == max(answer)):
            result.append(j+1)
        j += 1
        
    return result

쉽지만 살짝 노가다성 문제였다는,,,

profile
풀스택 개발자 가보자구~
post-custom-banner

0개의 댓글