전체 글 275

python 백준 알고리즘 1181번: 단어 정렬

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 중복 제거 - set 자료형 / if (변수) not in: 문자열을 길이순으로 정렬 - sort(key = len) 두 가지만 신경써주면 계속 쓰던거 쓰는 문제. 내 제출 import sys n = int(sys.stdin.readline()) set_list = set() # 중복제거 for i in range(n): set_list.add(sys.stdin.readline().st..

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