[Coding Test]/[백준]
[백준] 1966 파이썬(python) : 프린터 큐
1966번: 프린터 큐 import sys t = int(sys.stdin.readline()) for _ in range(t): n, m = map(int, sys.stdin.readline().split()) paperlist = list(map(int, sys.stdin.readline().split())) checklist, cnt = [0]*n, 0 checklist[m] = 1 #1 while True: if paperlist[0] == max(paperlist): #2 cnt += 1 #3 if checklist[0] != 1: #4 del paperlist[0] del checklist[0] elif checklist[0] == 1: #5 print(cnt) break else: paper..
[백준] 1929 파이썬(python) : 소수 구하기 - (에라토스테네스의 체)
1929번: 소수 구하기 시간초과가 났던 처음 코드)m, n = map(int, input().split())res = []for i in range(m, n+1): error = 0 for j in range(2, i): if i % j == 0: error += 1 if error == 0: res.append(i)for i in res: print(i) 에라토스테네스의 체를 적용해 시간을 줄인 코드)m, n = map(int, input().split())for i in range(m, n+1): if i == 1: #1 continue for j in range(2, int(i**0.5)+1): #2 ..
[백준] 1654 파이썬(python) : 랜선 자르기 - (★)
https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 22.08.06 수정) import sys n, m = map(int, sys.stdin.readline().split()) lan = [ int(sys.stdin.readline()) for _ in range(n) ] start, end = 1, max(lan) #1 res = 0 while start = m: #5 res = mid #6 start = mid + ..
[백준] 11866 파이썬(python) : 요세푸스 문제 0
https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net import sys n, k = map(int, sys.stdin.readline().split()) q = list(range(1, n+1)) #1 idx, res, length = 0, [], n while q: idx += (k-1) #2 res.append(q.pop(idx % length)) #3 idx = idx % length #4 length -= 1 #5 ans = ', '.join(map(str, res)) print(f'') #1 : 리스트 q에 1부터 n까지의..
[백준] 11650 파이썬(python) : 좌표 정렬하기
11650번: 좌표 정렬하기 import sysn = int(input())arr = []for i in range(n): x, y = map(int, sys.stdin.readline().split()) arr.append((x, y))arr.sort(key= lambda x : (x[0], x[1])) #1for x, y in arr: print(x, y) #1 : x축 기준 오름차순으로 정렬하고 그 다음 y축 기준으로 오름차순 정렬
[백준] 11050 파이썬(python) : 이항 계수 1
https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net math를 사용하지 않은 풀이) n, k = map(int, input().split()) up, down = 1, 1 for i in range(n, n-k, -1): up *= i for i in range(1, k+1): down *= i print(up // down) Combination을 구하는 문제인데 처음에 for문을 여러개 돌리다가 시간초과가 났었다. 풀이에선 n! / (n-k)!부분을 하나의 변수로(up) 처리하는것을 보고 왜 이렇게 생각하지 못했지를 후..