본문 바로가기
반응형

전체 글252

[백준][Python] 19583번 싸이버개강총회 19583번: 싸이버개강총회 첫번째 줄에는 개강총회를 시작한 시간 S, 개강총회를 끝낸 시간 E, 개강총회 스트리밍을 끝낸 시간 Q가 주어진다. (00:00 ≤ S < E < Q ≤ 23:59) 각 시간은 HH:MM의 형식으로 주어진다. 두번째 줄부터는 www.acmicpc.net 코드 import sys start,end,stream = input().split() start = 60*int(start[:2]) + int(start[3:]) end = 60*int(end[:2]) + int(end[3:]) stream = 60*int(stream[:2]) + int(stream[3:]) att = set() cnt = 0 while 1: try: time, user = sys.stdin.readline.. 2022. 9. 14.
[백준][Python] 4134번 다음 소수 4134번: 다음 소수 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. www.acmicpc.net 코드 import math def prime(a): for i in range(2,int(math.sqrt(a))+1): if a % i == 0: return False # 소수 아님 return True num = int(input()) for i in range(num): a = int(input()) if a < 2: print(2) else: while 1: if prime(a): print(a) break a+=1 설명 math.sqrt()를 이용하여 소수인지 확인하는 범위를 해당 숫자의 제곱근으로 줄이면 시간이 단축된다. 주어진 숫.. 2022. 9. 13.
[백준][Python] 18429번 근손실 18429번: 근손실 웨이트 트레이닝을 좋아하는 어떤 대학원생은, 현재 3대 운동 중량 500의 괴력을 소유하고 있다. 다만, 하루가 지날 때마다 중량이 K만큼 감소한다. 예를 들어 K=4일 때, 3일이 지나면 중량이 488로 www.acmicpc.net 코드 n,k = map(int,input().split()) n_list = list(map(int,input().split())) visit = [False] * n cnt = 0 ans = 0 def dfs(weight): global cnt, ans if weight < 500: return if cnt == n: ans += 1 return for i in range(n): if visit[i] == False: visit[i] = True we.. 2022. 8. 8.
[백준][Python] 10974번 모든 순열 10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net 코드 n = int(input()) visit = [False] * (n+1) s = [] def dfs(): if len(s) == n: print(*s) return for i in range(1,n+1): if visit[i] == False: s.append(i) visit[i] = True dfs() s.pop() visit[i] = False dfs() 아래 문제와 거의 똑같다. [백준][Python] 15649번 N과 M (1) 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 .. 2022. 8. 4.
[백준][Python] 1182번 부분수열의 합 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 코드 n, s = map(int,input().split()) n_list = list(map(int,input().split())) cnt = 0 def dfs(num,sum): global cnt if num >= n: return sum += n_list[num] if sum == s: cnt += 1 dfs(num+1,sum) dfs(num+1,sum-n_list[num]) dfs(0,0) print(cnt) 설명 df.. 2022. 8. 3.
[백준][Python] 15652번 N과 M (4) 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 코드 n,m = map(int,input().split()) s = [] def dfs(num): if len(s) == m: print(*s) return for i in range(num,n+1): s.append(i) dfs(i) s.pop() dfs(1) 2022. 8. 1.
[백준][Python] 15651번 N과 M (3) 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 코드 n,m = map(int,input().split()) s = [] def dfs(): if len(s) == m: print(*s) return for i in range(1,n+1): s.append(i) dfs() s.pop() dfs() 설명 같은 수를 여러번 골라도 되기 때문에 원래 코드에서 중복을 방지하는 visit[]를 없앴다. 2022. 8. 1.
[백준][Python] 15650번 N과 M (2) 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 코드 n, m = map(int,input().split()) s = [] visit = [False] * (n+1) def dfs(): if len(s) == m: print(*s) return for i in range(1,n+1): if visit[i] == False: if s: if s[-1] < i: visit[i] = True s.append(i) dfs() s.pop() visit[i] = False else: visit[i] = True s.ap.. 2022. 7. 29.
[백준][Python] 15649번 N과 M (1) 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 코드 n, m = map(int,input().split()) s = [] visit = [False] * (n+1) def dfs(): if len(s) == m: print(*s) return for i in range(1,n+1): if visit[i] == False: visit[i] = True s.append(i) dfs() s.pop() visit[i] = False dfs() 설명 백트래킹 문제는 처음 풀어봐서 다른 사람들의 풀이를 참고했다. DF.. 2022. 7. 29.
반응형