[알각코] 백준 2839번 - 설탕 배달

백준 2839번

n = int(input())

a = n // 3
b = n // 5

temp = []

for i in range(a):
    for j in range(b):
        if n == 3*a + 5*b:
            temp.append(a+b)

if len(temp) == 0:
    print(-1)
else:
    print(min(temp))

Screen Shot 2021-08-06 at 6 42 42 PM

맞았긴 맞았는데 이중포문 드가서 그런지 속도가 너무 느리당

n = int(input())
def test(n,b):
    if ((n-5*b)%3==0):
        return (n-5*b)//3+b
    elif ((n-5*b)%3!=0) & (b==0):
        return -1    
    else:
        return test(n,b-1)

b = n//5
print(test(n,b))

이건 친구가 옆에서 푼 방법인데 재귀로 풀었더라

요건 내꺼보다 세배나 빨랐당

n=int(input())
print(-(n in[4,7])or n-2*n//5*2)

글구 요건 백준 숏코딩에서 가져온 코드

or 연산자를 쓰는 방법을 알았당

n이 4이거나 7이면 -True => -1

또는 n-2n을 5로 나눈 몫2 인거같은데………

n = int(input())
result = 0

while n%5:
    n-=3
    result+=1
print(-1 if n<0 else result+(n//5))

받아온 n에서 5를 나눈 나머지가 false(0)일 때까지 while을 돈다.

n에서 5를 나눈 나머지가 존재할 때, n에서 3을 빼고 result를 1 더 한다.

그리고 n에서 5를 나눈 나머지가 false가 되면 프린트한다.

만약에 n이 0보다 작으면 -1, 아니면 result에서 n을 5 나눈 몫을 더한 값을 프린트한다.

Reference