99클럽 코테 스터디 9일차 TIL + 완전탐색:카펫

Saang Bum Kim·2024년 5월 28일
0

99클럽

목록 보기
45/59

문제

링크텍스트

풀이

  • 문제 그대로 아래 둑을 막고 모든 물을 퍼냈습니다.
  • yellow 를 1 부터 시작해서 인수 분해하여
    • 만약 y를 분해한 두 인수 m과 n이
    • (m+n+2)*2 == b 이면, 둘러싼 갈색 갯수와 같으므로
    • [m+2,n+2] 를 내보냅니다.
    • 다만 가로가 세로보다 같거나 크도록 합니다.

결과

def f_t(id_t):
    if id_t == 0:
        brown, yellow, r = 10,	2,	[4, 3]
    if id_t == 1:
        brown, yellow, r = 8,	1,	[3, 3]
    if id_t == 2:
        brown, yellow, r = 24,	24,	[8, 6]

    return brown, yellow, r

# def solution(brown, yellow):
def solution(b, y):    
    f_c = lambda m,n,b: [max(m,n)+2,min(m,n)+2] if (n+m+2)*2 == b else False

    a = f_c(y,1,b)
    if a:
        return a
    else:        
        y0 = y
        i = 2
        while i < y:
            if y % i == 0:
                a = f_c(i,int(y0/i),b)
                if a:
                    return a
            i += 1
    answer = []
    return answer

for i in range(3):
    print(f'test case {i}')
    brown, yellow, r = f_t(i)
    a = solution(brown, yellow)
    print(a)
    print(r)        

profile
old engineer

0개의 댓글