STUDY/Algorithm 402

[백준] 1167 트리의 지름 python

www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque V = int(input()) G = [list() for _ in range(V + 1)] for _ in range(V): node = 0 tmp_list = list(map(int, input().split())) for i in range(1, len(tmp_list..

STUDY/Algorithm 2021.05.08

[프로그래머스] 로또의 최고 순위와 최저 순위 python, 2021 Dev-Matching: 웹 백엔드 개발자(상반기)

programmers.co.kr/learn/courses/30/lessons/77484?language=python3 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr def solution(lottos, win_nums): win_nums_set = set(win_nums) lottos_set = set(lottos) correct = win_nums_set & lottos_set incorrect = win_nums_set - lottos_set zero_cou..

STUDY/Algorithm 2021.05.04

[프로그래머스] 행렬 테두리 회전하기 python, 2021 Dev-Matching: 웹 백엔드 개발자(상반기)

programmers.co.kr/learn/courses/30/lessons/77485?language=python3 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr def solution(rows, columns, queries): answer = [] min_val = rows * columns matrix = [] old_val = 0 for r in range(rows): tmp = list(range(old_val + 1, old_val + columns + 1)) old_val +..

STUDY/Algorithm 2021.05.04

[프로그래머스] 다단계 칫솔 판매 python, 2021 Dev-Matching: 웹 백엔드 개발자(상반기)

https://programmers.co.kr/learn/courses/30/lessons/77486?language=python3 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr def solution(enroll, referral, seller, amount): answer = [0] * (len(enroll)) graph_dict = dict(zip(enroll,range(len(enroll)))) for i in range(len(seller)): man = seller[i] price = amo..

STUDY/Algorithm 2021.05.04

[백준] 1074 Z python

www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서 www.acmicpc.net N, r, c = map(int, input().split()) def z(N, r, c): result = 0 while N > 0: if N == 1: result += r * 2 + c break else: flag = 4 ** (N - 1) half = (2 ** N) >> 1 N -= 1 if r < half and c < half: continue elif r < half: result += ..

STUDY/Algorithm 2021.05.04

[백준] 11724 연결 요소의 개수 python

www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net import sys input = sys.stdin.readline N, M = map(int, input().split()) # 방향 없는 그래프 G = [list() for _ in range(N + 1)] visit = [1] + [0] * N for _ in range(M): u, v = map(int, input().split()) G[u]..

STUDY/Algorithm 2021.05.04

[백준] 11723 집합 C

www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include #include int main() { int arr[21] = { 0 }; int T, num; char command[7]; scanf("%d", &T); for (int i = 0; i < T; i++) { scanf("%s", command); scanf("%d", &num); //printf("%s %d\n", command, num); if (strstr(comm..

STUDY/Algorithm 2021.05.04

[백준] 11279 최대힙 python

www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net import sys;input = sys.stdin.readline from heapq import heappop, heappush h = [] for i in range(int(input())): x = int(input()) if x: heappush(h, -x) else: print(-heappop(h) if h else 0) heapq는 기본이 minheap 이기때문에 마이너스 기호를..

STUDY/Algorithm 2021.05.04

[백준] 9095 1, 2, 3 더하기 C python

www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int arr[11] = { 0, 1, 2, 4 }; int T, n; for (int i = 4; i < 11; i++) { arr[i] += arr[i - 1] + arr[i - 2] + arr[i - 3] * 1; } scanf("%d", &T); for (int i = 0; i < T; i++) { scanf("%d", &n); printf("%d\n", arr[n]); } return 0; } arr = ..

STUDY/Algorithm 2021.05.04