파이썬

    알고리즘: 이진 트리 경로 길이 구하기

    class TNode: def __init__ (self,data, left, right): self.data = data self.left = left self.right = right def count_node(n): if n is None: return 0 else: return 1+count_node(n.left) + count_node(n.right) def path_length(root,totalNodes): if (totalNodes == 1)or(totalNodes==0) : return 0; noOfNodes1 = count_node(root.left) noOfNodes2 = count_node(root.right) return ( path_length(root.left, noOfNode..

    백준 1260번: DFS와 BFS

    1260번: DFS와 BFS (acmicpc.net) 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 from collections import deque import sys n,m,start..

    백준 10828번: 스택

    10828번: 스택 (acmicpc.net) 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import sys from collections import deque n = int(input()) que = deque() for i in range(n): command = list(map(str,sys.stdin.readline().split())) if comman..

    백준 10845번: 큐

    10845번: 큐 (acmicpc.net) 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import sys from collections import deque n = int(input()) que = deque() for i in range(n): command = list(map(str,sys.stdin.readline().split()))..

    백준 10866번: 덱

    10866번: 덱 (acmicpc.net) 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 import sys from collections import deque n = int(input()) dq = deque([]) for i in range(n): command = list(map(str,sys.stdi..

    백준 1920번: 수 찾기

    1920번: 수 찾기 (acmicpc.net) 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import sys n = int(input()) word = list(map(int, sys.stdin.readline().split())) m = int(input()) w = list(map(int, sys.stdin.readline().split..

    백준 10989번: 수 정렬하기 3

    10989번: 수 정렬하기 3 (acmicpc.net) 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 import sys n = int(input()) num = [0]*10001 for i in range(n): number = int(sys.stdin.readline()) num[number] = num[number] +1 for i in range(10001): if num[number]!=0: for j in range(num[i]): print(i) cs 💡 예전에 못 풀었던 ..

    백준 2231번: 분해합

    https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 n = int(input()) len=len(str(n)) if n

    백준 10816번: 숫자 카드 2

    10816번: 숫자 카드 2 (acmicpc.net) 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net Lower bound는 찾고자 하는 숫자이상의 값이 처음으로 나오는 인덱스 값을 반환하고 Upper bound는 찾고자 하는 숫자초과의 값이 처음으로 나오는 인덱스 값을 반환한다. 이분 탐색에서 배열은 항상 정렬된 상태여야 한다. n,L,k,M = int(input()),list(map(int, input().split())),int(input()),list(map(int, i..

    백준 1476번: 날짜 계산

    1476번: 날짜 계산 (acmicpc.net) 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 a,b,c = map(int, input().split()) e = [] s = [] m = [] for i in range(532): E=15*i+a S=28*i+b M=19*i+c e.append(E) s.append(S) m.append(M) if E in s: for j in range(len(m)): if E == m[j] and m[j..