본문 바로가기

Python11

[알고리즘] 덱 백준 10866 (Python) 큐와 비슷하지만 덱은 양쪽에서 push, pop이 가능하다. 코드 import sys n = int(input()) deque = [] for i in range(n): command = sys.stdin.readline().split() if command[0] == 'push_front' : deque.insert(0,command[1]) elif command[0] == 'push_back' : deque.append(command[1]) elif command[0] == "pop_front" : if len(deque) == 0 : print(-1) else : print(deque.pop(0)) elif command[0] == "pop_back" : if len(deque) == 0 : pri.. 2022. 1. 16.
[알고리즘] K번째 수 백준 11004 (Python) 코드 import sys n, k = map(int, input().split()) arr = list(map(int,input().split())) arr.sort() print(arr[k-1]) 입출력 2022. 1. 14.
[알고리즘] 카드 백준 11652 (Python) 처음에는 길이가 n인 배열을 선언해서 카드 숫자에 해당하는 인덱스에 +1을 하려 했다. 하지만 sort함수를 사용하면 카드 숫자와 상관없이 정렬이 되어 정답이 0으로만 나온다. 이 문제를 해결하기 위해서 dictionary를 사용했다. 코드 import sys n = int(sys.stdin.readline()) card = {} for i in range(n): key = int(sys.stdin.readline()) if key in card.keys(): card[key] += 1 else: card[key] = 1 card = sorted(card.items(), key = lambda x : (-x[1], x[0])) print(card[0][0]) 입출력 2022. 1. 14.
[알고리즘] 2xn 타일링 백준 11726 (Python) 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 코드 n = int(input()) dp = [0]*1001 dp[1] = 1 dp[2] = 2 for i in range(3, n+1): dp[i] = dp[i-1] + dp[i-2] print(dp[n]%10007) 2022. 1. 12.
[알고리즘] 1로 만들기 백준 1463 (Python) 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 코드 n = int(input()) dp = [0 for i in range(n+1)] for i in range(2, n+1): dp[i] = dp[i-1] + 1 if i % 3 == 0: dp[i] = min(dp[i], dp[i//3] + 1) if i % 2 ==.. 2022. 1. 12.