코딩일지 218

python 백준 알고리즘 11651번: 좌표 정렬하기 2

https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 11650번과 비슷한 문제이지만 이번에는 기준점이 y점이다. 단순하게 y와 x의 배열을 바꾼것으로 해결 내 제출 import sys n = int(sys.stdin.readline()) array = [] for i in range(n): [x, y] = map(int, sys.stdin.readline().split()) array.app..

python 백준 알고리즘 11650번: 좌표 정렬하기

https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 배열 안에 N개만큼 좌표를 저장 정렬 for 반복문으로 배열[i][0] (x좌표) 배열[i][1] (y좌표) 출력 내 제출 import sys n = int(sys.stdin.readline()) array = [] for i in range(n): [x, y] = map(int, sys.stdin.readline().split()) array..

python 백준 알고리즘 1427번: 소트인사이드

https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net N을 string으로 변환해 한 글자씩 분리해서 리스트에 저장해둔다 리스트 내림차순으로 정렬 반복문을 이용해 첫글자부터 출력 내 제출 import sys n = int(sys.stdin.readline()) num_list = [] for i in str(n): num_list.append(int(i)) num_list.sort(reverse = True) for i in num_list: print(i, end = '')

python 백준 알고리즘 2108번: 통계학

https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 산술평균 - round(sum(nums) / n) 중앙값 - sort 혹은 sorted 정렬 후, 정중앙 수 nums[int((n - 1) / 2)] ** 최빈값 첫 구상 - 딕셔너리 생성 후 정수들 append 해서 가장 많은 밸류 찾기 구글링을 했더니 collection 모듈의 Counter 함수를 사용해 빈도수를 구하는 방법이 있었다. 출력 조건중 최빈값이 여러 개 있을 때에는 그중 두 번째로 작은 값을 ..

python 백준 알고리즘 25305번: 커트라인

https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 점수 리스트를 내림차순 정렬해서 k-1번째를 프린트하면 되는 간단한 문제 N, k = map(int,input().split()) scores = list(map(int,input().split())) scores.sort(reverse=True) print(scores[k - 1])

python 백준 알고리즘 10989번: 수 정렬하기 3

https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 카운팅 정렬(Counting Sort, 계수 정렬) - 주어진 배열의 값 범위가 작은 경우 빠른 속도를 갖는 정렬 알고리즘, 최댓값과 입력 배열의 원소 값 개수를 누적합으로 구성한 배열로 정렬을 수행한다. 이번에는 기존방식 사용시 메모리 초과가 뜨게 된다. 공간복잡도를 줄이는 형식으로 풀어야 하는 문제. 내 제출 import sys n = int(sys.stdin.readline()) num_list = [0] * ..

python 백준 알고리즘 2751번: 수 정렬하기 2

https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 2750번과 같은 문제지만 N의 범위가 1,000,000으로 굉장히 높아 input으로 받으면 시간초과에 걸리게 된다. 파이썬의 표준 라이브러리인 sys의 sys.stdin.readline()를 이용하여 문제를 해결할 수 있었다. 내 제출 import sys n = int(input()) num_list = [] for _ in range(n): num_list.append(int(sy..

python 백준 알고리즘 2750번: 수 정렬하기

https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 오름차순 정렬 - sort 혹은 sorted 이용 sort - 리스트 자체를 변경 / sorted - 기존의 리스트가 아닌 정렬된 새로운 리스트 생성 문제에서 권장하는 방법으로 버블정렬, 삽입정렬을 사용할 수도 있다 버블정렬 - 첫 번째 자료와 두 번째 자료를, 두 번째 자료와 세 번째 자료를, 세 번째와 네 번째를, … 이런 식으로 (마지막-1)번째 자료와 마지막 자료를 비교하여 교환하면서 자료를 정렬하..

python 백준 알고리즘 10870번: 피보나치 수 5 - 동적 프로그래밍 활용해보기

https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 기존에 활용했던 재귀함수를 사용하면 이렇게 표현할 수 있다. def fibonacci(n): if n

20220919 TIL

오늘의 한 일 자료구조, 알고리즘 강의 - 1~3주차 백준 알고리즘 문제 풀이 및 정리 - 재귀, 브루트 포스 자료구조, 알고리즘 강의 1~3주차 ** 시간 복잡도, 공간 복잡도 ** 어레이와 링크드 리스트, 클래스를 이용한 링크드 리스트 구현 ** 재귀 함수 ** 정렬 (버블 정렬, 선택 정렬, 삽입 정렬, 병합 정렬) ** 스택, 큐 ** 해쉬 자료구조 알고리즘 카테고리 정리 예정. 이걸 먼저 듣고 백준문제를 풀었어야 했는데! 재귀 함수에 대해 이해하기 쉽게 설명해주어 영양가 높은 강의였다. 백준 문제풀이를 하면서 신경쓰였던 시간초과 부분에 관해서도 시간 복잡도에 대한 설명을 통해 어떤 식으로 시간을 줄여나가야 할지 이해하는데 큰 도움이 됐다. 클래스의 이용 방법도 특강만 들었을때는 어떻게 쓰일지 도..