[백준] 1931번 회의실배정과 여러가지 정렬방법
·
Algorithm/백준
1. 문제 2. 소스코드 import sys n = int(sys.stdin.readline()) room = [] for _ in range(n): time = list(map(int,sys.stdin.readline().split())) room.append(time) room.sort(key = lambda x:(x[1],x[0])) end = 0 cnt = 0 for i,j in room: if i>=end: cnt += 1 end = j print(cnt) 이번 문제는 숫자 범위가 꽤 넓어서 그런지 sys를 쓰고 안 쓰고의 시간차이가 굉장히 많이 난다...!!! + sort를 어떻게 쓰느냐에 따라 정렬순서가 달라지기 때문에 이 점 유의해야 할 것 같다 3. sort list = [ [1, 4],..
[백준] 1927, 11279번 최소 힙, 최대 힙
·
Algorithm/백준
1. 문제 2. 소스코드 import heapq import sys n = int(sys.stdin.readline()) heap = [] for _ in range(n): item = int(sys.stdin.readline()) if item == 0: if heap: print(heapq.heappop(heap)) else: print(0) else: heapq.heappush(heap, item) import heapq import sys n = int(sys.stdin.readline()) heap = [] for _ in range(n): item = int(sys.stdin.readline()) if item == 0: if heap: print(heapq.heappop(heap)*(-1))..
[백준] 11047번 동전 0 과 greedy algorithm
·
Algorithm/백준
1. 문제 2. 소스코드 N, K = map(int, input().split()) coin = [] count = 0 for _ in range(N): coin.append(int(input())) # 여기서 for _ in range(N+1):로 했다가 EOFError(Ran out of input) 발생... 범위를 잘 지키자 coin.sort(reverse = True) for i in coin: count += K//i K = K%i print(count) 3. greedy algorithm
[백준] 11727번 2xn 타일링 2
·
Algorithm/백준
1. 문제 2. 소스코드 n = int(input()) dp = [0]*1001 dp[1] = 1 dp[2] = 3 if n < 3: print(dp[n]) else: for i in range(3, n+1): dp[i] = dp[i-1]+dp[i-2]*2 print(dp[i]%10007) 3. Just 1일 1문제 풀기가 내 목표인데 오늘은 2문제나 풀었다 왜? 오늘은 설날이기도 하고, 세뱃돈 받아서 통장도 두둑(?) 해졌고, 맛있는 것도 많이 먹어서 그냥 2문제 풀고 싶었다. 가끔 2문제 풀고 싶은 날도 있어야 어디가서 컴공이라고 하지...뭐...ㅎ... 요즘 문제를 풀면서 느낀건 고딩때 수학을 포기 하지 않아서 다행이었다는 점? 이 문제 풀면서 경우의 수 구하다가 머리에 쥐내릴 뻔,,,
[백준] 11726번 2xn 타일링
·
Algorithm/백준
1. 문제 2. 소스코드 n = int(input()) dp = [0 for _ in range(n+1)] if n < 3: print(n) else: dp[1] = 1 dp[2] = 2 for i in range(3, n+1): dp[i] = dp[i-1]+dp[i-2] print(dp[i]%10007) 3. 고민
[백준] 11659번 구간 합 구하기 4 와 accumulate
·
Algorithm/백준
1. 문제 2. 소스코드 import sys input = sys.stdin.readline n, m = map(int, input().split()) num = list(map(int, input().split())) nums = [0] temp = 0 for i in num: temp += i nums.append(temp) for i in range(m): a, b = map(int, input().split()) print(nums[b] - nums[a-1]) 3. 고민 Python 내장함수인 itertools의 accumulate를 사용하여 누적합을 구하려 했는데,,, 일단 고민중...
[백준] 9095번 1, 2, 3 더하기
·
Algorithm/백준
1. 문제 2. 소스코드 N = int(input()) def sol(n): if n == 1: return 1 elif n == 2: return 2 elif n ==3: return 4 else : return sol(n-1) + sol(n-2) + sol(n-3) for i in range(N): n = int(input()) print(sol(n)) 3. 해설
[백준]2606번
·
Algorithm/백준
1. 문제 2. 소스코드 n = int(input()) m = int(input()) graph = [[] for _ in range(n+1)] for _ in range(m): a, b = list(map(int, input().split())) graph[a].append(b) graph[b].append(a) cnt = 0 visited = [0]*(n+1) def dfs(start): global cnt visited[start] = 1 for i in graph[start]: if visited[i] == 0: dfs(i) cnt += 1 dfs(1) print(cnt) 3. 해설 for _ in range(m): a, b = list(map(int, input().split())) graph[..
[백준] 일상글 Class2 완료🥳
·
Algorithm/백준
드디어 Class2를 마무리 했다...!!! 현재 티어는 Silver 2🥈
[백준] 1874 스택 수열과 문제 설명
·
Algorithm/백준
1. 문제 2. 문제 설명 3. 소스코드 N = int(input()) stack = [] result = [] count = 0 X = True for _ in range(N): num = int(input()) while count < num: count += 1 stack.append(count) result.append("+") if stack[-1] == num: stack.pop() result.append("-") else: X = False break if X == False: print("NO") else: for i in result: print(i)