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의 메모리 낭비