본문 바로가기

정렬61

[SW Expert Academy] 5204. 병합 정렬 5204. 병합 정렬 문제) 알고리즘 교수님은 학생들에게 병합 정렬을 이용해 오름차순으로 정렬하는 과제를 내려고 한다. 정렬 된 결과만으로는 실제로 병합 정렬을 적용했는지 알 수 없기 때문에 다음과 같은 제약을 주었다. N개의 정렬 대상을 가진 리스트 L을 분할할 때 L[0:N//2], L[N//2:N]으로 분할 한다. 병합 과정에서 다음처럼 왼쪽 마지막 원소가 오른쪽 마지막 원소보다 큰 경우의 수를 출력한다. 정렬이 끝난 리스트 L에서 L[N//2] 원소를 출력한다. 알고리즘 교수님의 조건에 따라 병합 정렬을 수행하는 프로그램을 만드시오. [입력] 첫 줄에 테스트케이스의 수 T가 주어진다. 1 0: result.append(right.popleft()) return result # 병합정렬을 위해서 리.. 2022. 3. 30.
[백준] 1427번: 소트인사이드 (python) 1427번: 소트인사이드 문제 ) 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력 : 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 : 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. 풀이) 1 2 3 4 5 6 7 8 n = input() li = [] for i in n: li.append(i) li.sort(reverse=True) print("".join(li)) cs 출처 : https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www... 2022. 2. 19.
[백준] 2750번: 수 정렬하기 (python) 2750번: 수 정렬하기 문제 ) N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 : 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 : 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 풀이) 1 2 3 4 5 6 7 n = int(input()) li = [int(input()) for i in range(n)] li.sort() for i in li: print(i) cs 출처 : https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1.. 2022. 2. 19.
[백준] 11399번: ATM (python) 11399번: ATM 문제 ) 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4.. 2022. 2. 8.