본문 바로가기

> 알고리즘 문제 풀이78

*[Python] 1904-01타일 > 출처: www.acmicpc.net/problem/1904 - 아쉬운 점: - 동적 프로그래밍의 개념을 알고 있었지만 풀지 못했다 - 문제의 핵심을 찌르는 점화식을 발견해야겠다 N = int(input()) dp = [0] * 1000001 dp[1] = 1 dp[2] = 2 for i in range(3, N+1): dp[i] = (dp[i-2] + dp[i-1]) % 15746 print(dp[N]) 2020. 10. 26.
[Python] 13300-방 배정 > 출처: www.acmicpc.net/problem/13300 * 핵심 로직: - 학년별, 성별 반이 달라야한다 -> 리스트로 구분 - 같은 학년, 같은 성별의 학생수가 K보다 클 경우 - 방을 1개 늘리고 (학생수 - K) 를 반복한다 ** 아쉬운 점: - 이 문제는 사실 while문을 굳이 돌리지 않고도, - if (학생 수 % K == 0) 이면, cnt += 학생 수 // K - else 이면, cnt += 학생 수 // K + 1 로 간단하게 해결할 수 있었다 N, K = map(int, input().split()) student = [[0, 0] for _ in range(6)] for _ in range(N): S, Y = map(int, input().split()) student[Y-.. 2020. 10. 26.
[Python] 2609-최대공약수와 최소공배수 - 이전에 정리한 내용과 문제를 참고하여 금방 풀었다 - 관련 코드: bky373.tistory.com/106?category=891584 - 유사 문제: bky373.tistory.com/166?category=884824 a, b = map(int, input().split()) t = 1 c, d = max(a, b), min(a, b) while t > 0: t = c % d c, d = d, t print(c, a*b//c) 2020. 10. 25.
1v1- 최대공약수와 최소공배수 (python, 파이썬) - 유클리드 알고리즘 체크! """ 1번: 나의 풀이 """ def gcd(a, b): gcm = 1 for k in range(2, min(a, b) + 1): while a % k == 0 and b % k == 0: a //= k b //= k gcm *= k return gcm def lcm(a, b): return a*b//gcd(a, b) def solution(n, m): g = gcd(n, m) return [g, lcm(n, m, g)] """ 2번: 다른 사람의 풀이 """ def gcdlcm(a, b): c, d = max(a, b), min(a, b) t = 1 while t > 0: t = c % d c, d = d, t return [c, a*b//c] def solution(n.. 2020. 10. 24.