완전 탐색 - 카펫

krystal·2023년 10월 5일
0

코딩테스트 대비

목록 보기
8/11

https://school.programmers.co.kr/learn/courses/30/lessons/42842

이거까지 풀고 dfs/bfs를 푼다음 다시 완전 탐색으로 넘어가야하나 고민된다.. 시간이 좀 많이 부족한 듯 ㅠ

(혼란 그 자체...)

24, 24 테스트 케이스를 골똘히 생각하다가 약수?? 라는 생각을 했다. 그러다가 질문하는 내용들을 보다가 약수로 고려하는 것들이 있길래 접근방법이 맞겠구나 싶어 약수를 구하는 쪽으로 해보았다.

def Div(x):
    div = []
    for i in range(1,(x//2)+1):
        if x%i == 0:
            div.append(i)
    a = div[len(div)//2]
    b = x//a
    return a,b

def solution(brown, yellow):
    answer = []
    bx, by = 0, 0
    if yellow > 1:
        a, b =Div(yellow)
        a += 2
        b += 2
        if a > b:
            bx, by = a, b
        else:
            bx, by = b, a
    else:
        bx = 1 + 2
        by = 1 + 2
        
    answer.append(bx)
    answer.append(by)

패기롭게 냈지만 테스트 케이스 몇 개가 통과되질 않는다 ㅠㅠ

일단 너무 임의로 잡은게 크다;
약수를 꼭 중간자리에서 찝어야해?
그리고 1이 고정이 아닐 수도 있고.. 쫌 엉망진창이긴 하다;

조건을 설정해주고 brown의 가로는 yellow 가로의 +2 .. 이런식으로 바꿔서 해주자.

def Div(x):
    div = []
    for i in range(1,x+1):
        if x%i == 0:
            div.append(i)
    return div

def solution(brown, yellow):
    answer = []
    yx, yy = 0, 0
    bx, by = 0, 0
    
    div = Div(yellow)
    for num in div:
        find = ((brown-num*2)//2)-2
        if (find in div) and (find*num == yellow):
            if find > num:
                yx, yy = find, num
            else:
                yx, yy = num, find
            break
    bx = yx + 2
    by = yy + 2

    answer.append(bx)
    answer.append(by)
    return answer

profile
https://source-coding.tistory.com/

0개의 댓글