목록2024/02 (99)
미소를뿌리는감자의 코딩
https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 1. 접근 방법 client에 대한 정보들을 순서대로 입력을 받은 후, 나이를 기준으로 정렬하면 된다. 나이가 같을 경우, 가입한 순으로 출력하는 조건에 대해서는 딱히 신경을 써주지 않아도, 가입한 순으로 list에 넣었기 때문에 괜찮다. 하지만 신경이 조금 쓰이다면 unsorted_list = [] for i in range(int(input())): unsorted_list.append(list(i..
https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 1. 접근 방법 이번 문제는 python으로 접근할 경우 아주 쉽게 풀 수 있다. python 의 sort()는 Timsort 알고리즘을 사용하기에, O(n logn) 의 시간 복잡도를 가지기 때문이다. 시간 복잡도 측면에서도 나쁘지 않으므로 바로 list에 값을 정리해주고, sort를 해준 후 출력해 주었다. 2. 코드 def sort_nums(): unsorted_list = [] ..
python의 sort는 어떤 알고리즘을 사용할까? 주로 사용되는 정렬함수 [ sorted() ] 와 리스트 타입의 메소드 [ sort() ] 는 모두 내부적으로 'Timsort' 알고리즘을 사용한다. Timsort는 팀 피터스가 파이썬을 위해 개발한 정렬 알고리즘이다. 삽입 정렬과 병합 정렬의 특징을 결합한 알고리즘이다. -> 이제 삽입 정렬과 병합 정렬에 대해서 알아보자 1) 삽입 정렬 [ Insertion Sort ] - 배열을 정렬된 부분과 정렬되지 않은 부분으로 나눈다. - 정렬되지 않은 부분의 첫 번째 원소를 적절한 위치에 삽입하여 정렬된 부분을 확장해 나가는 방식으로 작동한다. 최선의 경우 : O(n) 평균, 최악의 경우: O(n^2) 특징: - 안정적인 정렬 방법이다. - 작은 데이터 세트..
https://www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 1. 접근 방법 이전에 Java로 문제를 처음 풀었을 때에는, 규칙을 찾는 것인지 몰라 많이 헤맸었다. 하지만, 이번에는 규칙을 찾는 것임을 알고 있었기에 비교적 쉽게 풀 수 있었다. 우선 거리에 따른 횟수를 노트에 적어가며 규칙을 찾도록 했다. 이런식으로 적어주었다. 이후 동그라미를 친 숫자들을 보면, 제곱수를 대상으로 위아래로 루트(제곱수) 만큼 숫..