백준
-
[백준] 2747 피보나치 수열백준 Online Judge 2021. 8. 31. 15:26
2747번: 피보나치 수 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 문제 해설 0과 1로 시작한다. 그 다음부터는 바로 앞 두 피보나치 수의 합이 된다. 기본적인 재귀 함수를 이용하면 시간 초과로 풀 수 없다. 입력 받은 수가 n 일 경우, n 번째 피보나치 수열 수를 구하라. 0 1 1 2 3 5 8 a b a b = (a+b) a b = (a+b) a b = (a+b) .. .. n = int(input()) a, b = 0, 1 while n > 0: a, b = b, a+b n -= 1 p..
-
[백준] 10989 수 정렬하기백준 Online Judge 2021. 8. 30. 21:22
10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 해설 수 정렬 하기 (N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.) 계수 정렬 알고리즘 (Counting Sort) : 수의 범위가 제한적일 때 사용 가능하다. 각 각의 인덱스를 값으로 보는 정렬 알고리즘. 데이터가 등장한 횟수를 세는 알고리즘. 데이터 갯수가 많을 때는 sys.stdin.readline()을 이용한다. 참고로, 쥬피터 노트북에서는 sys.stdin.readline() 사용 불가다. import sys n = int(sys.std..
-
[백준] 11650 좌표 정렬하기백준 Online Judge 2021. 8. 30. 21:01
11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제 해설 x 좌표 순서대로 정렬 하되, x 값이 같은 경우 y을 비교하여 정렬한다. n = int(input()) array = [] for _ in range(n): x, y = map(int, input().split(' ')) array.append((x, y)) # 기본적으로 sorted 함수 내에서, x가 같은 경우 y 크기 순으로 정렬하는 내용이 포함되어 있다. array = sorted(array..
-
[백준] 10814 나이 순으로 정렬하기백준 Online Judge 2021. 8. 27. 16:20
문제 해설 나이 순으로 정렬 하기 첫 번째 입력 값은 몇 명의 사람이 입력되는지 보여 준다. 나이가 같을 때는 입력이 먼저 된 사람부터 보여 준다. 튜플을 사용하면 쉽게 풀 수 있다. n = int(input()) array = [] # array는 리스트 형태 for _ in range(n): input_data = input().split(' ') # 리스트 array에 튜플 형태로 데이터 삽입 array.append((input_data[0], input_data[1])) array = sorted(array, key=lambda x:x[0]) for i in array: print(i[0], i[1]) GitHub - DAWUNHAN/Algorithms-and-DataStructure: Algor..
-
[백준] 1427 숫자 내림차순 정렬백준 Online Judge 2021. 8. 27. 15:51
문제 설명 입력 받은 숫자를 내림차순으로 정렬 문제 풀이 array = input() for i in range(9, -1, -1): for j in array: if int(j) == i: print(i, end='') GitHub - DAWUNHAN/Algorithms-and-DataStructure: Algorithms and DataStructure with Python Algorithms and DataStructure with Python. Contribute to DAWUNHAN/Algorithms-and-DataStructure development by creating an account on GitHub. github.com [ 패스트캠퍼스 알고리즘 / 기술면접 완전 정복 올인원 패키지..
-
[백준] 2750 수 정렬백준 Online Judge 2021. 8. 27. 15:26
문제 해설 처음 입력된 수는 숫자 개수이다. 2~n줄에는 숫자가 입력된다. 숫자를 작은 숫자부터 순서대로 출력한다. 선택 정렬로 해결하기 남은 원소 중에서 가장 작은 숫자를 앞으로 넣는다. n = int(input()) num_list = list() for i in range(n): num_list.append(int(input())) for i in range(n): min_idx = i for j in range (i+1, n): if num_list[min_idx] > num_list[j]: min_idx = j num_list[i], num_list[min_idx] = num_list[min_idx], num_list[i] for i in range(n): print(num_list[i]) 파이..
-
[백준] ⭐⭐ 4195 친구 네트워크백준 Online Judge 2021. 8. 26. 21:13
문제 설명 친구와 친구 간에 서로 연결된 네트워크가 있을 때, 총 몇 명이 연결 되어 있는가? 합집합을 찾는 문제 (Union-Find Algorithm) 재귀 함수를 이용하여, 연결된 네트워크를 찾고 또 찾는다. def find(x): if x == parent[x]: return x # 재귀 함수 형태로 부모 원소를 찾는다. else: p = find(parent[x]) parent[x] = p return parent[x] def union(x, y): x = find(x) y = find(y) # x, y의 부모 값이 다른 경우, y의 부모 값을 x의 부모 값으로 바꾼다. if x != y: parent[y] = x number[x] += number[y] test_case = int(input(..
-
[백준] 1920 수 찾기백준 Online Judge 2021. 8. 26. 20:31
문제 링크 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 문제 해설 문제: 주어진 정수 안에 찾는 정수가 존재 하는가? 힌트: set 자료형은 중복이 허용되지 않는 집합이다. 리스트 [] 튜플 () 값을 바꿀 수 없다. 딕셔너리 {key1:value1, key2:value2,..} 집합 set {} 중복값이 없다. 문제 풀이 코드 n = int(input()) array = set(map(int, input().split())) m = int(input()) ..