💡 Codeing Test 46

이진트리순회(DFS : Depth First Search) with python

" 인프런 - 파이썬 알고리즘 문제풀이 입문 강의 참고" 이진트리 순회(깊이우선 탐색) 전위순회 : def DFS(v): if v>7: return else: print(v ,end=" ") DFS(v*2) DFS(v*2+1) if __name__=="__main__": DFS(1) 보통 본연의 작업들을 처리하고 그다음 호출하는 방식이 전위순회 방식이다 중위순회: def DFS(v): if v>7: return else: DFS(v*2) print(v, end=" ") DFS(v*2+1) if __name__=="__main__": DFS(1) 후위순회: def DFS(v): if v>7: return else: DFS(v*2) DFS(v*2+1) print(v, end=" ") if __name__==..

백준 3085 :: 사탕 게임 (python)

문제 https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 분류 구현 부르트포스 알고리즘 나의 풀이 import sys input = sys.stdin.readline def check(arr): n=len(arr) answer =1 for i in range(n): cnt =1 for j in range(1,n): if arr[i][j] == arr[i][j-1]: cnt +=1 else: cnt=1 if cnt > answer: answer =cnt cnt=1 for j in range(1,n): if arr[j][i] == arr[j-1][i]: cnt+=1 e..

백준 2805번 :: 나무 자르기 (python)

문제 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 분류 이분탐색 매개변수 탐색 나의 풀이 n,m = map(int,input().split()) tree = list(map(int,input().split())) lt=0 rt=max(tree) tree.sort() while lt mid: cnt+=x-mid if cnt >= m: lt = mid+1 else: rt = mid-1 print(rt) 이..

이진 탐색(Binary Search) 개념 & 구현

" 이것이 코딩테스트다 (with.python) 나동빈님의 책을 참고하여 작성되었습니다" 순차탐색 순차탐색이란 ? 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례로 확인하는 방법 # 소스코드 def sequential_search(n, target, array): for i in range(n): if array[i] ==target: return i+1 #현재 위치 반환 input_data=input().split() n = int(input_data[0]) target = input_data[1] array=input().split() print(sequential_search(n,target,array)) 데이터의 정렬 여부와 관계없이 가장 앞에 있는 원소부터 하나씩 확..

백준 15903번 :: 카드 합체 놀이 (python)

문제 https://www.acmicpc.net/problem/15903 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net 분류 : 그리디 나의 풀이 n , m= map(int, input().split()) card = list(map(int, input().split())) card.sort() for _ in range(m): s = card[0]+card[1] card[0]=card[1]=s card.sort() print(sum(card)) sort함수를 이용하여 계..

백준 5545번 :: 최고의 피자 (python)

문제 https://www.acmicpc.net/problem/5545 5545번: 최고의 피자 첫째 줄에 토핑의 종류의 수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 도우의 가격 A와 토핑의 가격 B가 주어진다. (1 ≤ A, B ≤ 1000) 셋째 줄에는 도우의 열량 C가 주어진다. (1 ≤ C ≤ 10000) 다음 줄 www.acmicpc.net 분류 : 그리디 알고리즘 내 풀이 n = int(input()) a,b = map(int,input().split()) c= int(input()) d = [] for _ in range(n): d.append(int(input())) d.sort(reverse=True) cnt =0 large=c//a n=0 for i in d: cnt += i..