반응형

알고리즘 142

[파이썬, Python] 백준 2231: 분해합

문제 https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) ans = 0 for i in range(1, n+1): num = i + sum(list(map(int,str(i)))) if num == n: ans = i break print(ans) 설명 수를 입력받고 그 수까지 반복하며 생성자를 찾아낸다. i = 12..

[파이썬, Python] 백준 2798: 블랙잭

문제 https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 코드 n, m = map(int, input().split()) card = list(map(int,input().split())) ans = 0 for x in range(n): for y in range(x+1 ,n): for z in range(y+1 ,n): card_sum = card[x] + card[y] + card[z] if card_sum

[파이썬, 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 fivo(n): ans = 0 if n == 0: return ans elif n == 1: return ans + 1 else: ans = fivo(n-1) + fivo(n-2) return ans n = int(input()) print(fivo(n)) 설명 n이 0과 1일 경우, 그리고 나머지의 경우를 통해 피보나치 수를 계산하였다. ..

[파이썬, Python] 백준 10872: 팩토리얼

문제 https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 코드 def fact(n): ans = 1 if n > 0: ans = n * fact(n-1) return ans n = int(input()) print(fact(n)) 설명 간단하게 팩토리얼로도 구현이 가능하지만, 재귀를 연습하는 문제이므로 재귀로 구현했다. n까지의 값을 구하면서, n-1의 팩토리얼을 이용하여 재귀를 사용하였다.

[파이썬, Python] 백준 18870: 좌표 압축

문제 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) num = list(map(int, input().split())) numset = sorted(set(num)) dic = {numset[i]: i for i in range(len(numset))} for i in num: print(d..

[파이썬, Python] 백준 10814: 나이순 정렬

문제 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 코드 import sys n = int(sys.stdin.readline()) people_list = [] for _ in range(n): age, name = sys.stdin.readline().rstrip().split() age = int(age) people_list.append((age, name)) people_list.sort(key = lambda x: x[0]) for i i..

[파이썬, Python] 백준 1181: 단어 정렬

문제 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 코드 n = int(input()) text_list = [] for _ in range(n): text_list.append(input()) text_list = list(set(text_list)) text_list.sort() text_list.sort(key=len) for i in text_list: print(i) 설명 우선 단어들을 입력받고 한 번 정렬을 해준다. 이후..

[파이썬, 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 코드 import sys n = int(sys.stdin.readline()) num_list = [] for _ in range(n): x, y = map(int, sys.stdin.readline().split()) num_list.append([x,y]) num_list.sort(key = lambda x: (x[1], x[0])..

[파이썬, 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 코드 import sys n = int(sys.stdin.readline()) num_list = [] for _ in range(n): x, y = map(int, sys.stdin.readline().rstrip().split()) num_list.append((x,y)) num_list.sort() for x,y in num_list..

[파이썬, Python] 백준 1427: 소트인사이드

문제 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 코드 n = ''.join(sorted((input()), reverse=True)) print(n) 설명 방법이 여러가지가 있는데 그 중에서 join을 사용하여 리스트의 문자열을 합치는 방식으로 하였다. 입력 받은 수를 역순으로 정렬하여 n에 join해주고 n을 출력해준다.

반응형