BOJ 180

백준 11399번 ATM 파이썬

https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 내 답안 N = int(input()) p = sorted(list(map(int, input().split()))) result = 0 while N != 0: result += p[len(p)-N] * N N -= 1 print(result) 인출이 가장 빠르게 되는 사람 순으로 정렬을 하는 게 핵심 아이디어이다. 예제로 주어진 문제를 풀어본다면 1 1+2 1+2+3 1+2+3+3 1+2+3+3+4 이런 식으로 나타낼 수 ..

BOJ/Python 2022.04.17

백준 1181번 단어 정렬 파이썬

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 내 답안 import sys input = sys.stdin.readline x = list(set([input().rstrip() for _ in range(int(input().rstrip()))])) x.sort() x.sort(key = len) for i in x: print(i) N 개의 단어는 리스트 컨프리헨션으로 간단히 받았다. list(set( [] )) 를 한 이유는 ..

BOJ/Python 2022.04.11

백준 12865번 평범한 배낭 파이썬

https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 내 답안 import sys input = sys.stdin.readline N, K = map(int, input().rstrip().split()) dp = [0] * (K + 1) for _ in range(N): W, V = map(int, input().rstrip().split()) for i in range(K, W -..

BOJ/Python 2022.03.31

백준 7576번 토마토 파이썬 BFS

https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 내 답안 from collections import deque import sys input = sys.stdin.readline M, N = map(int, input().rstrip().split()) tomato = [list(map(int, input().rstrip().split())) for i in range(N)] date = [[0] * M for _ in rang..

BOJ/Python 2022.03.30

백준 1259번 팰린드롬수 파이썬

https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 내 답안 import sys input = sys.stdin.readline while True: x = input().rstrip() if x == '0': break else: cnt = 0 l = len(x) // 2 for i in range(l): if x[i] == x[-(i + 1)]: # 순차적으로 탐색 cnt += 1 if l == cnt: print('yes') else: print('no') ..

BOJ/Python 2022.03.29

백준 2292번 벌집 파이썬

https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 내 답안 import sys input = sys.stdin.readline N = int(input()) if N == 1: print(1) else: for i in range(1, N): if 3*(i**2) - 3*i + 2

BOJ/Python 2022.03.28

백준 2164번 카드2 파이썬

https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 내 답안 from collections import deque import sys N = int(sys.stdin.readline().rstrip()) q = deque([i for i in range(1, N + 1)]) while (len(q) != 1): q.popleft() if len(q) == 1: break else: q.append(q.popleft()) print(q[0]) 파이썬..

BOJ/Python 2022.03.25

백준 10816번 숫자 카드 2 파이썬

https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 내 답안 import sys from bisect import bisect_left, bisect_right input = sys.stdin.readline N = int(input()) N_list = sorted(list(map(int, input().split()))) M = int(input()) M_list = list(map(int, input().sp..

BOJ/Python 2022.03.23

백준 11055번 가장 큰 증가 부분 수열 파이썬

https://www.acmicpc.net/problem/11055 11055번: 가장 큰 증가 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수 www.acmicpc.net 내 답안 import sys input = sys.stdin.readline N = int(input()) A = list(map(int, input().split())) dp = [0] * N dp[0] = A[0] for i in range(1, N): for j in range(i): if A[i] > A[j]: dp[i] = max..

BOJ/Python 2022.03.22