알고리즘

알고리즘

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

n = int(input()) l = [] for _ in range(n): a,b = map(str, input().split()) a = int(a) l.append((a, b)) l.sort(key = lambda s : (s[0])) for i in l: print(i[0], i[1]) lambda 로 푸는건 알았는데 아직 식을 쓰는데 미숙했다 0번째만 정렬하면 되므로 lambda s : s[0]으로 쓰면 된다.

알고리즘

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

n = int(input()) stk = [] for _ in range(n): m = int(input()) if len(stk) != 0 and m == 0: stk.pop() else: stk.append(m) print(sum(stk))

알고리즘

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

a = int(input()) for _ in range(a): h, w, n = map(int, input().split()) l = 1 while h < n: n -= h l += 1 if l < 10: l = "0" + str(l) else: l = str(l) print(str(n) + l) l은 호실 거리 n 이 h 이하가 될때까지 n 을 h씩 빼주고 l을 1씩 더해준다 그리고 형식에 맞게끔 정리해서 출력해준다

알고리즘

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

n = int(input()) for _ in range(n): m = input() l = [] for i in m: if i == "(": l.append("(") else: if len(l) != 0 and l[-1] == "(": l.pop() else: l.append(")") if len(l) == 0: print("YES") else: print("NO") 저번에 푼 4949번과 똑같은 알고리즘이다 (일때는 append )일때는 조건을 만족하면 pop하고 아니면 append한다

알고리즘

<백준> 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) 어려운 문제인 줄 알고 다른 블로그 참고했는데 쉬운 문제였다 순서로 정렬하려하면 중복된 순위도 있으니 막막했지만 그냥 개개인으로 보고 자기보다 덩치가 크면 순위를 올려준다 쉽게 풀린다

알고리즘

<백준> 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을 해준..

알고리즘

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

import sys while True: arr = list(map(int, map(int, sys.stdin.readline().split()))) arr.sort() if arr[0]==0 and arr[1]==0 and arr[2]==0: break if arr[0]**2 + arr[1]**2 == arr[2]**2: print("right") else: print("wrong") arr에 숫자를 받아놓고 정렬 한다 이후에 피타고라스 정리가 True or False 인지 확인하면 된다

알고리즘

<백준> 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://..

알고리즘

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

n ,m = map(int, input().split()) l = list(map(int, input().split())) start, end = 1, max(l) ans = 0 while start = mid: log += i - mid if log >= m: ans = mid start = mid + 1 else: end = mid - 1 print(ans) 이분탐색을 이용하여 푸는 문제였다 아직 미숙해서 print(end)보다는 ans 로 따로 값에 대한 변수를 정해놓는게 더 직관적인것 같다

알고리즘

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

n, m = map(int, input().split()) l = list(map(int, input().split())) q = 0 for i in range(n): for j in range(i + 1, n): for k in range(j + 1, n): s = l[i] + l[j] + l[k] if s

changha.
'알고리즘' 카테고리의 글 목록 (10 Page)