분류 전체보기 177

<백준> 7568번 파이썬 알고리즘

n = int(input()) l = [] for _ in range(n): w, h = map(int,input().split()) l.append((w, h)) p = [] for i in l: r = 1 for j in l: # if (i[0] != j[0]) and (i[1] != j[1]): // 굳이 안써도 통과 된다 if (i[0] < j[0]) and (i[1] < j[1]): r += 1 p.append(r) for k in p: print(k) 어려운 문제인 줄 알고 다른 블로그 참고했는데 쉬운 문제였다 순서로 정렬하려하면 중복된 순위도 있으니 막막했지만 그냥 개개인으로 보고 자기보다 덩치가 크면 순위를 올려준다 쉽게 풀린다

알고리즘 2021.07.10

<백준> 4949번 파이썬 알고리즘

while True: a = input() stk = [] if a == ".": break for i in a: if i == "[" or i == "(": stk.append(i) elif i == "]": if len(stk) != 0 and stk[-1] == "[": stk.pop() else: stk.append("]") break elif i == ")": if len(stk) != 0 and stk[-1] == "(": stk.pop() else: stk.append(")") break if len(stk) == 0: print("yes") else: print("no") [ or ( 일때는 append 해준다 만약 ] or ) 일때는 stack의 마지막 원소가 짝이 맞을 때 pop을 해준..

알고리즘 2021.07.10

<백준> 2869번 파이썬 알고리즘

import sys import math a, b, v = map(int, sys.stdin.readline().split()) res = (v - a) / (a - b) print(math.ceil(res) + 1) 쉬운 문제인듯 싶었지만 시간초과가 났다 반복문 없이 바로 계산을 해야 되는 것 같다 다른 블로그를 참고해보니 res = (v - b) / (a - b) print(math.ceil(res))로 했지만 이해가 잘 안됐다.. 위 코드처럼 푸니까 이해가 됐다 res = (v - a) / (a - b)​ 총 길이에서 a(하루) 만큼 뺀다 왜냐면 v / (a - b)에서는 도착했을 때는 b를 빼주지 말아야 하는데 포함했기 때문이다 그래서 그냥 먼저 a만큼 빼준다 print(math.ceil(res)..

카테고리 없음 2021.07.09

<백준> 2805번 파이썬 알고리즘

n = int(input()) k = n % 5 ## 5로 나눈다음 나머지 l = n // 5 ## 5로 나눈 몫 t = 0 ## 3의 개수 while l >= 0: if k % 3 == 0: t = k // 3 k = k % 3 break k += 5 l -= 1 if k == 0: print(l + t) else: print(-1) 1. 5의 배수로 나눔 2. 나머지가 3으로 나뉘는 지 확인 2-1) 나뉠때 ==> t 에 3의 갯수 저장, k 갱신 2-2) 나뉘지 않을 때 ==> 나머지에 5를 더하고 몫에서 -1을 한다 3. 반복 4. 결과 4-1)만약 k가 0이 아니면 3으로 나뉘지 않았으므로 -1 출력 4-2) k가 0이면 3으로 나뉘었으니 l + t 출력 더 자세히 설명한 블로그 https://..

알고리즘 2021.07.09