알고리즘149 [파이썬]softeer: 바이러스 해당 문제의 요점은 시간초과를 해결하는 것이다. 문제를 읽어보면, 어렵지 않은 로직을 가진 문제인데, 모든 변수가 많은 수의 범위를 가짐! 문제를 보고 구현을 해보면 k*(p^n)의 식이 성립이 되는데, 이는 수가 너무 커져서 시간초과의 큰 요인이됨 그래서 고안한 방법 import sys input = sys.stdin.readline k, p, n = list(map(int,input().split())) for i in range(n): k = k*p % 1000000007 print(k) k*(p^n) == k*p*p*p.... 이 된다. 곱해질 숫자를 그때그때 1000000007 로 나누게 된다면, 곱해지는 숫자가 작아지고 시간초과의 틀을 벗어날 수 있음 2023. 1. 25. [파이썬]softeer: 회의실 예약 https://softeer.ai/practice/info.do?idx=1&eid=626&sw_prbl_sbms_sn=111569 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 단순 구현문제인데... 시간이 많이 걸림 dictionary에 넣은 뒤, 하나씩 빼면서 출력,,, import sys from collections import defaultdict n, m= map(int, input().split()) meeting_name = defaultdict() # 9-10-11-12-13-14-15-16-17-18 meeting_res_list = [[0 for _ in range(9)] for _ in range(n)] for i in range(n): room.. 2023. 1. 24. [파이썬]softeer: 금고털이 그리드 문제인데, 조건이 하나 있다면 금고를 터는 범인은 톱이 있어서 잘라서 가져갈 수 있다. 따라서 무게에 맞춰 금괴를 잘라가면 끝! W,N = list(map(int,input().split())) arr = [] for i in range(N): lst = list(map(int,input().split())) arr.append(lst) arr.sort(key=lambda x: x[1], reverse=True) answer = 0 for i in range(N): if W >= arr[i][0]: answer += (arr[i][0]*arr[i][1]) W -= arr[i][0] else: answer += arr[i][1] * W break print(answer) 2023. 1. 23. [파이썬]baekjoon 12919: A와 B 2 https://www.acmicpc.net/problem/12919 12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net 두개의 경우를 생각하며 재귀로 문제를 풀면 된다. 우선 T를 함수의 인자로 받고 재귀를 태우며 S에 맞게 끔 변형시키고 S 와 T가 같다면 print(1)을 해준다. 이 문제에 핵심은 재귀를 태우고, 다시 루프로 돌아갈 때 나오는 경우를 출력하지 않아야 하는것 인데 이 부분은 다른 블로그를 확인해서 알게되었지만 sys.exit()을 이용하여 코드실행을 아예.. 2023. 1. 22. [파이썬]baekjoon 1149: RGB거리 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net dp문제 경우는 3가지가 있다. 직전에 빨간색을 발랐을 경우, 직전에 초록색을 발랐을 경우, 직전에 파란색을 발랐을 경우 세 경우의 최소비용을 dp배열에 저장하며 계산하면 끝! n = int(input()) arr = [list(map(int,input().split()))for _ in range(n)] # 3개의 경우로 케이스를 나눔 dp = [[0]*3 for _ in .. 2023. 1. 21. [파이썬]baekjoon 2775: 부녀회장이 될테야 https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net dp문제 문제 자체를 보고 구현하였기 때문에, 3중포문까지 나왔음.. t = int(input()) for i in range(t): k = int(input()) n = int(input()) dp = [[0]*15 for _ in range(k+1)] for i in range(15): dp[0][i] +=i for j in range(1,k+1): for x in range(n+1): for l in range(x+1): dp[j].. 2023. 1. 20. 이전 1 ··· 5 6 7 8 9 10 11 ··· 25 다음