Programming/Algorithm 237

[백준] #24060 알고리즘 수업 - 병합 정렬 1 python

https://www.acmicpc.net/problem/24060 24060번: 알고리즘 수업 - 병합 정렬 1 첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 108)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109) www.acmicpc.net 📕 설명 📕 병합 정렬을 이용한 재귀를 구현하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N, K = map(int ,input().split()) num_list = list(map(int ,input().split())) cnt = 0 result = -1 def merge_sort(num_list, p, r): if p < r and cnt

[백준] #25501 재귀의 귀재 python

https://www.acmicpc.net/problem/25501 25501번: 재귀의 귀재 각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다. www.acmicpc.net 📕 설명 📕 주어진 힌트에 대하여 문자를 앞부터, 그리고 뒤부터 비교해 가며 풀이하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N = int(input()) def recursion(s, left, right, cnt): cnt += 1 if left >= right: return 1, cnt elif s[left] != s[right]: return 0, cnt else: return recursion(s, left+1, right-1, cnt) def i..

[백준] #10870 피보나치 수 5 python

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 📕 설명 📕 피보나치를 구현한 재귀 함수 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N = int(input()) def fibonacci(N): if N == 0: return 0 if N == 1: return 1 return fibonacci(N - 1) + fibonacci(N - 2) print(fibonacci(N))

[백준] #18870 좌표 압축 python

https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 📕 설명 📕 list에 넣은 후 sort하면 넣은 순서를 지킬 수 없다. 이를 지키기 위해서 200개를 담는 배열을 만든 뒤, 나이에 맞게 하나씩 넣는다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N = int(input()) num_list = list(map(int ,input().split())) num_val = sorted(list(set(num_li..

[백준] #10814 나이순 정렬 python

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 📕 설명 📕 list에 넣은 후 sort하면 넣은 순서를 지킬 수 없다. 이를 지키기 위해서 200개를 담는 배열을 만든 뒤, 나이에 맞게 하나씩 넣는다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N = int(input()) src = [] src_two = [[] for i in range(200)] for i in range(N): src.append(list(map(str,input().split()))) ..

[백준] #1181 단어 정렬 python

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 📕 설명 📕 길이를 받아오기 위해서 50개짜리 배열에 숫자에 맞게 append 하여 길이에 맞게 정렬하였다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 import sys N = int(input()) src = [] src_fit = [[]for i in range(50)] for i in range(N): src.append(sys.stdin.readline().rstrip()) src.sort(..

[백준] #11651 좌표 정렬하기 2 python

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 📕 설명 📕 list에 값들을 넣고 sort하면 알아서 Python에서 x좌표까지 sort 가능하다. 좌표를 바꾸어 출력을 하기만 하면 된다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 import sys N = int(input()) src = [] for i in range(N): x, y = map(int, sys.stdin.readline().sp..

[백준] #11650 좌표 정렬하기 python

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 📕 설명 📕 list에 값들을 넣고 sort하면 알아서 Python에서 y좌표까지 sort 가능하다. 🧑🏻‍💻 나의 풀이 🧑🏻‍💻 N = int(input()) src = [] for i in range(N): src.append(list(map(int, input().split()))) for x, y in sorted(src): print(..

[백준] #1427 소트인사이드 python

https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 📕 설명 📕 문자열을 뒤집는 것은 [::-1]과 같이 할 수 있다. 이번 문제는 Counter를 사용해서 풀이 하였다. 또는 sorted를 이용할 수도 있다. 🧑🏻‍💻 나의 풀이 1 🧑🏻‍💻 from collections import Counter N = input() result = "" C_N = Counter(sorted(N)) for i in C_N: for j in range(C_N[i]): result += i print(sorted(N)[::-1]) 🧑🏻‍💻 나의 풀이 ..