문제풀이/백준(Boj) 문제풀이 188

[백준][그리디 알고리즘] 1026. 보물(파이썬/Python)

import sys input = sys.stdin.readline n = int(input()) a = list(map(int,input().split())) b = list(map(int,input().split())) a.sort() result = [] for i in range(n): result.append(a[i]*max(b)) b.pop(b.index(max(b))) print(sum(result)) # B를 정렬하지 않아야 하니 A를 정렬시켜 B의 가장 큰 값을 A의 가장 작은 값과 곱해 리스트에 넣어주고 이미 사용한 MAX(B)의 값을 POP해줘서 다음 A의 가장 작은 값과 B의 가장큰 값을 곱해 리스트에 넣어 최종적으로 리스트를 합해주는 방법으로 진행한다.

[백준][수학/문자열/정렬] 1755. 숫자놀이 (파이썬/Python)

import sys input = sys.stdin.readline o = {'8':'0', '5':'1', '4':'2', '9':'3', '1':'4', '7':'5', '6':'6', '3':'7', '2':'8', '0':'9'} m, n = map(int, input().split()) r = [] for i in range(m, n+1): s = [str(i)] k = "" for j in s[0]: k += o[j] s.append(k) r.append(s) r = sorted(r, key=lambda x:x[1]) for i, j in enumerate(r): if (i+1)%10 == 0: print(j[0]) else: print(j[0], end=" ")

[백준][DFS/BFS] 1260. DFS와 BFS (파이썬/Python)

import sys input = sys.stdin.readline def dfs(v): print(v,end=" ") visited[v] = 1 for i in range(1, n+1): if visited[i] == 0 and graph[v][i] == 1: dfs(i) def bfs(v): queue = [v] visited[v] = 0 while(queue): v = queue[0] print(v,end=' ') del queue[0] for i in range(1, n+1): if visited[i] == 1 and graph[v][i] == 1: queue.append(i) visited[i] = 0 n,m,v = map(int,input().split()) graph = [[0] * (n+1..

[백준][정수론 및 조합론] 1676. 팩토리얼 0의 개수 (파이썬/Python)

import sys input = sys.stdin.readline n = int(input()) print(n//5 + n//25 + n//125) # 팩토리얼로 얻은 수를 인수분해 할 때 0이 늘어나는 경우는 10(2X5)를 곱하는 경우이다. #5의 개수를 찾으면 쉽게 문제를 풀수 있다. #10에서 0의 개수가 2인 이유는 5에서 한 번 10에서 한 번이기 때문에(10은 5X2) 답이 2가 되는 것이다. #범위가 0 < n < 500이니 125까지