0121 TIL

looggi·2023년 1월 21일
0

스파르타 내배캠 AI-3

목록 보기
121/130
post-thumbnail

프로그래머스 문제풀기

➡️ 카펫

def solution(brown, yellow):
    size = brown+yellow
    w=0
    h=0

    while size!=w*h:
        h+=1
        w=int((brown+4)/2-h)
        
    return [w,h]

다른 사람 풀이보기에서 사람들이 다 루트를 썼다..

기본적으로 **(1/2)로 루트를 구현할 수 있는데
파이썬 내장함수 pow도 똑같은 역할(제곱)을 하고 둘 모두 결과값이 int타입이다

import math 해서 쓸 수 있는 math.pow는 float타입을 반환한다
추가로 math.sqrt는 아예 제곱근을 반환하는 함수고 마찬가지로 float타입을 반환한다

def solution(brown, red):
    for i in range(1, int(red**(1/2))+1):
        if red % i == 0:
            if 2*(i + red//i) == brown-4:
                return [red//i+2, i+2]

➜ i를 나처럼 첨에 정의해줄 필요가 없음
최대 범위를 루트를 이용해서 구하는 것도 신박함 근데 문제는 다른 사람들이 다 이렇게 했는데 난 이럴 생각도 못했다는 거... 몰까..?
무튼 그래서 i는 내가 생각했던 w 또는 h에 해당하는 값임
if가 저렇게 연속적으로 쓰이면 and로 두개의 조건을 묶어줘도 된다
최종적으로 i는 1부터 시작하니까 무조건 red//i+2>i+2니까 순서대로 리스트에 담아서 반환하면 됨
이렇게 노란 타일의 가로 세로 순서쌍을 만들어서 푸는 것도 괜찮은 방법인듯.. 이걸로 풀어봤는데 가로가 무조건 세로보다 기니까 sqrt를 쓴건데 또 안씀 ㅋㅋ

➡️ 제일 작은 수 제거하기

def solution(arr):
    arr.pop(arr.index(min(arr)))
    if len(arr)==0:
        return [-1]
    return arr

remove를 쓰서 그냥 arr.remove(min(array))하면 되는데 괜히 pop을 써가지고.. 인덱스 넣어줘야하고.. 으으
pop의 메모리 낭비

profile
looooggi

0개의 댓글