본문 바로가기
Algorithm/완전탐색

[프로그래머스 lv 1] 최소직사각형

by HANNI하니 2023. 2. 6.

사용 언어 - Python3

문제 - 최소직사각형

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

정답

큰 값은 w에 작은 값에 h에 append하는 완전 탐색 문제 (정답 맞춘 여부 X)

정답 풀이

x,y 값이 최대가 되는 값을 찾아야한다. 하지만, x와 y는 회전시킬 수도 있다. 

그렇기 때문에 x,y 값 중큰 값을 한쪽 리스트에 append하고, 작은 값을 다른 리스트에 append하고 

각 리스트에서 max 값을 찾으면 가장 큰 가로축, 세로축을 구할 수 있다.

# 정답
def solution(sizes):
    w,h = [], []

    for i in range(len(sizes)):
        if sizes[i][0] >= sizes[i][1]:
            w.append(sizes[i][0])
            h.append(sizes[i][1])
        else:
            w.append(sizes[i][1])
            h.append(sizes[i][0])
            
    return max(w)*max(h)

 

나는 너무 어렵게 생각한 것 같다...

# 나의 접근방식 - 오답
def solution(sizes):
    answer = 0
    
    size_x, size_y = [], []
    
    for size in sizes:
        size_x.append(size[0])
        size_y.append(size[1])
    
    for i in range(len(sizes)):
        for j in range(len(sizes)):
            answer = size_x[i]*size_y[j]
            result = 0

            for size in sizes:
                if (size_x[i] >= size[0] and size_y[i] >= size[1] and answer >= size[0]*size[1]):
                    result += 1
                elif (size_x[i] >= size[1] and size_y[i] >= size[0] and answer >= size[0]*size[1]):
                    result += 1

            if result == len(sizes):
                return answer

 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글