정렬 47

[Python] 백준 풀기 11497 - 통나무 건너뛰기

파이썬 백준 11497번 실버 1 https://www.acmicpc.net/problem/11497 11497번: 통나무 건너뛰기 남규는 통나무를 세워 놓고 건너뛰기를 좋아한다. 그래서 N개의 통나무를 원형으로 세워 놓고 뛰어놀려고 한다. 남규는 원형으로 인접한 옆 통나무로 건너뛰는데, 이때 각 인접한 통나무의 높이 www.acmicpc.net 문제 보기 분류: 그리디 알고리즘, 정렬 문제 풀기 아이디어는 위와 같다. 오름차순 또는 내림차순 정렬된 리스트에서 가장 작은 수를 기준으로 하여 왼쪽과 오른쪽을 번갈아가며 순차적으로 숫자를 채워나간다. 작성된 코드는 주어진 통나무 리스트를 오름차순 정렬한다. 리스트의 가장 작은 값을 기준으로 잡고 deque() 를 이용하여 오른쪽 append(), 왼쪽 app..

공부하기/백준 2022.12.16

[Python] 백준 풀기 2217 - 로프

파이썬 백준 2217번 실버 4 https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 문제 보기 분류: 수학, 그리디 알고리즘, 정렬 문제 풀기 최대 중량을 들기 위해서는 단일 로프가 허용하는 중량이 클수록 그리고 중량을 분산할 로프가 많을수록 유리하다. 따라서 임의의 순서로 주어지는 로프의 중량 정보를 내림차순 정렬을 하고 가장 허용 중량이 작은 로프부터 하나씩 제거해 가며 최댓값을 찾는다. 내림차순 정렬된 로프 리스트에서 맨 오른쪽 데이..

공부하기/백준 2022.12.10

[Python] 백준 풀기 2212 - 센서

파이썬 백준 2212번 골드 5 https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net 문제 보기 분류: 그리디 알고리즘, 정렬 문제 풀기 예제 입력 1 번에 대한 경우를 그림으로 나타내면 위와 같다. 집중국이 커버칠 수 있는 최소한의 거리를 찾으면 가장 넓은 구간 3 을 제외하고 2, 1+2 를 선택하여 최솟값을 이루는 집중국을 위치시킬 수 있다. 임의로 주어진 센서의 순서를 오름차순으로 정렬을 하고, 그 숫자(센서) 간의 ..

공부하기/백준 2022.12.08

[Python] 백준 풀기 1026 - 보물

파이썬 백준 1026번 실버4 https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 문제 보기 분류: 수학, 그리디 알고리즘, 정렬 문제 풀기 문제의 의도가 좀 애매한 것 같다. B를 정렬하지 말라고 했는데 정작 결과를 도출해야 하는 요소는 주어진 계산식으로 만들어질 수 있는 최솟값이다. 따라서, S = A[0] × B[0] + ... + A[N-1] × B[N-1] 에서 B 의 배열은 마음속에 고정해 두고, A 와 B 가 짝을 이룰 수 있는..

공부하기/백준 2022.12.05

[Python] 백준 풀기 10825 - 국영수

파이썬 백준 10825번 실버4 https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 문제 보기 분류: 정렬 문제 풀기 sort() 함수와 lambda 를 이용하여 한 줄로 작성을 하려 했는데 생각처럼 되지 않았다. 아니 다시 해보니 생각대로 된다. 답안은 이미 제출했는데.. 맥주의 힘인가.. 괄호를 치는데 잘못됨이 있었다 더 공부하자 문제에서 제시한 조건 1. 2. 3. 4. 순서를 보면 순차적으로 다음 조건을 제시하는데 이는..

공부하기/백준 2022.12.02

[Python] 백준 풀기 1946 - 신입 사원

파이썬 백준 1946번 실버1 https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 문제 보기 분류: 그리디 알고리즘, 정렬 문제 풀기 순위를 2차원 리스트로 입력받아 오름차순 정렬을 하고 순차적인 서류 등수 순번대로 면접 등수를 비교하여 우위에 있는 지원자를 찾는다. 조건을 만족할때 hired 를 하나씩 늘려 선발되는 지원자의 수를 출력한다. 코드 보기 import sys inputdata = sys.stdin.readline..

공부하기/백준 2022.11.22

[Python] 백준 풀기 1181 - 단어 정렬

파이썬 백준 1181번 실버5 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 문제 보기 분류: 문자열, 행렬 문제 풀기 한 단계 한 단계 set() 과 sort() 함수를 사용하여 풀었다. 주어진 단어들을 리스트에 입력받고 set() 을 사용하여 중복제거 word_ls = list(set(word_ls)) sort() 를 사용하여 알파벳 순으로 정렬 word_ls.sort() sort(key = len) 을 사용하여 문자 길이 순으..

공부하기/백준 2022.11.19