BOJ 185

백준 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 input = sys.stdin.readline lst = [] for i in range(int(input())): x, y = map(int, input().split()) lst.append((x, y)) lst.sort() for i, j in lst: print(f'{i} {j}') 리스트에 넣은 튜플들을 ..

BOJ/Python 2022.03.18

백준 1931번 회의실 배정 파이썬

https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 내 답안 N = int(input()) M = [] for i in range(N): start_time, end_time = map(int, input().split()) M.append((start_time, end_time)) # 끝나는 시간으로 시간대 정렬 M.sort(key=lambda x: (x[1], x[0])) et = cnt = 0 for start_time, end_time in M: if start_time >= et: et = end_time cnt += 1 print(cnt) # 끝나는 시..

BOJ/Python 2022.03.17

백준 15649번 N과 M (1) 파이썬

https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 내 답안 from itertools import permutations N, M = map(int, input().split()) A = [i for i in range(1, N + 1)] for i in permutations(A, M): for j in i: print(j, end=' ') print() permutations (iterable, r) 파이썬 itertools 모듈에는 많은 ..

BOJ/Python 2022.03.16

백준 11053번 가장 긴 증가하는 부분 수열 파이썬

https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 내 답안 import sys input = sys.stdin.readline N = int(input()) A = list(map(int, input().split())) dp = [1] * N for i in range(1, N): for j in range(i): if A[i] > A[j]: dp[i] = max(d..

BOJ/Python 2022.03.15

백준 1935번 후위 표기식 2 파이썬

https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 내 답안 import sys input = sys.stdin.readline N = int(input()) x = input().rstrip() stack = [] # 피연산자 바로 추가할 리스트 생성 dic = {} # 딕셔너리 생성 keys = sorted(list(set([i for i in x if i.isalpha()]))) # 후위연산자에서 변수만 뽑아내기 values = [..

BOJ/Python 2022.03.14

백준 11866번 요세푸스 문제 0 파이썬

https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 내 답안 from collections import deque N, K = map(int, input().split()) q= deque([i for i in range(1, N + 1)]) print('') queue 의 맨 앞에 있는 원소를 k-1번 뒤로 보내는걸 반복해준다. 그리고 k번째에 popleft() 를 통해 그 원소를 삭제해주고 바로 문자열로 출력해주는 프로그램을 짰다. 쉽게 보여준다면 deque([1, 2, 3, 4, 5, 6, 7]) deque([2, 3, 4, ..

BOJ/Python 2022.03.13

백준 1918번 후위 표기식 파이썬

https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 내 답안 import sys input = sys.stdin.readline tokens = input().rstrip() result = [] op = [] priority = {'*': 2, '/': 2, '+': 1, '-': 1, '(': 0} for i in tokens: if i.isalpha(): result.append(i) elif i == '(': op.append(i) el..

BOJ/Python 2022.03.12

백준 2748번 피보나치 수 2 파이썬

https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 내 답안 n = int(input()) list1 = [0, 1] x, y = 0, 1 for i in range(n): x, y = y, x + y list1.append(y) print(list1[n]) 시간 초과를 받지 않기 때문에 DP를 쓰지 않고 일반적인 알고리즘으로 해결하였다.

BOJ/Python 2022.03.11

백준 1977번 완전제곱수 파이썬

https://www.acmicpc.net/problem/1977 1977번: 완전제곱수 M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완 www.acmicpc.net 내 답안 M = int(input()) N = int(input()) x = [i ** 2 for i in range(1, 101) if i ** 2 = M] if len(x) == 0: print(-1) else: print(sum(x)) print(x[0]) 3번째 줄 처럼 조건에 맞게 리스트를 만들어 준다면 쉽게 해결할 수 있는 문제였다.

BOJ/Python 2022.03.10

백준 2804번 크로스워드 만들기 파이썬

https://www.acmicpc.net/problem/2804 2804번: 크로스워드 만들기 A의 길이를 N, B의 길이를 M이라고 했을 때, 출력은 총 M줄이고, 각 줄에는 N개 문자가 있어야 한다. 문제 설명에 나온 것 같이 두 단어가 교차된 형태로 출력되어야 한다. 나머지 글자는 '.'로 출력 www.acmicpc.net 내 답안 A, B = input().split() N = len(A) M = len(B) matrix = [['.'] * N for _ in range(M)] for i in range(N): if A[i] in B: row = i col = B.index(A[i]) break for i in range(M): matrix[i][row] = B[i] for i in range(..

BOJ/Python 2022.03.09
반응형
목차(index)