๐ป Algorithm/Python
-
[Python] ๋ฐฑ์ค - 2579 ๊ณ๋จ ์ค๋ฅด๊ธฐ (DP)๐ป Algorithm/Python 2021. 10. 26. 13:08
๐ ์ฒซ ๋ฒ์งธ ์๋ (์ธ๋ฑ์ค ์๋ฌ) - dp ํ ์ด๋ธ ๋ง๋ค์ด์ d[1], d[2]๊ฐ์ ๋ฏธ๋ฆฌ ์ง์ ํด์ฃผ๋ ๊ฒฝ์ฐ๋ ์ ๋ ฅ๊ฐ n์ด 1, 2์ผ ์ํฉ๋ ์๊ฐํด์ผ ํ๋ค. - ๋ฐฑ์ค์์ ๋ฐํ์ ์๋ฌ(IndexError) ๋๋ฉด ๋ฌธ์ ์กฐ๊ฑด์์ ์ ๋ ฅ๊ฐ ๋ฒ์ ํ์ธํ๊ธฐ n = int(input()) steps = [int(input()) for _ in range(n)] d = [0] * n d[0] = steps[0] d[1] = steps[0] + steps[1] d[2] = steps[2] + max(steps[0], steps[1]) for i in range(3, n): d[i] = steps[i] + max(d[i-2], d[i-3] + steps[i-1]) print(d[n-1]) โ ๋ ๋ฒ์งธ ์๋ (์ฑ๊ณต) - ๋ฎ์ ๊ณ๋จ..
-
[Python] ๋ฐฑ์ค - 1912 ์ฐ์ํฉ (DP)๐ป Algorithm/Python 2021. 10. 25. 01:11
๐ ์ฒซ ๋ฒ์งธ ์๋ (์๊ฐ์ด๊ณผ) - ์ด์ค for๋ฌธ์ผ๋ก ๊ฐ ์์ i๋ง๋ค ์ ์์๋ค๊ณผ์ ๋ถ๋ถํฉ์ ๊ตฌํ์ฌ ๊ทธ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ d[i]์ ์ ์ฅ - d[i] ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ์ถ๋ ฅ n = int(input()) array = list(map(int, input().split())) d = [min(array)] * n for i in range(n): sum = 0 for j in range(i, -1, -1): sum += array[j] d[i] = max(d[i], sum) print(max(d)) โ ๋ ๋ฒ์งธ ์๋ (์ฑ๊ณต) - ๊ฐ ์์ i๋ง๋ค ๊ทธ ์์ ๋ถ๋ถํฉ์ ๊ตฌํ ํ์๋ ์์ - ์ด์ฐจํผ ์์๊ฐ ํฌํจ๋๋ฉด ์ต๋๊ฐ์ ๋ฌผ ๊ฑด๋๊ฐ๋ฏ๋ก i ์ง์ ์์์์ ํฉ๋ง ํ์ธํ๋ฉด ๋จ n = int(input()) array =..
-
[Python] ์ด์ฝํ - ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํน์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (์ด์งํ์)๐ป Algorithm/Python 2021. 10. 20. 14:55
๋ฌธ์ ๐ ์ฒซ ๋ฒ์งธ ์๋ - bisect ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ์ ๋ต์ ์ป์ ์ ์๋ค. from bisect import bisect_left, bisect_right n, x = map(int, input().split()) array = list(map(int, input().split())) diff = bisect_right(array, x) - bisect_left(array, x) if diff == 0: print(-1) else: print(diff) ๐ bisect ๋ผ์ด๋ธ๋ฌ๋ฆฌ - bisect_left(a, x): ๋ฐฐ์ด a์ ์์ x๊ฐ ๋ค์ด๊ฐ ์ ์๋ ๊ฐ์ฅ ์ผ์ชฝ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ - bisect_right(a, x): ๋ฐฐ์ด a์ ์์ x๊ฐ ๋ค์ด๊ฐ ์ ์๋ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ
-
[Python] ์ด์ฝํ - ๋ก๋ณถ์ด ๋ก ๋ง๋ค๊ธฐ (์ด์งํ์)๐ป Algorithm/Python 2021. 10. 20. 00:05
๋ฌธ์ ๐ ์ฒซ ๋ฒ์งธ ์๋ (์ ํํ์) - ์ด์งํ์ ํํธ์ธ ๊ฑด ์์ง๋ง ์ ์ด์งํ์์ ์จ์ผ ํ๋์ง ๋ชฐ๋์ - ์ ๋จ๊ธฐ์ ๋์ด๋ฅผ ๊ฐ์ฅ ๊ธด ๋ก์ ๊ธธ์ด๋ก ์ค์ ํ๊ณ 1์ฉ ์ค์ฌ๋๊ฐ๋ฉด์ ์๋ฆฐ ๋ก์ ๊ธธ์ด(rest)์ ํฉ์ ๊ณ์ฐ n, m = map(int, input().split()) height = sorted(list(map(int, input().split())), reverse=True) for i in range(height[0], 0, -1): rest = list(map(lambda x: x-i if x>i else 0, height)) if sum(rest)>=m: print(i) break โ ๋ ๋ฒ์งธ ์๋ (์ด์งํ์) - ๋ก์ ๊ธธ์ด์ ์ ๋จ๊ธฐ์ ๋์ด๋ 0๋ถํฐ 10์ต๊น์ง์ ์ ์ ์ค ํ๋์ด๋ค. - ์ด๋ ๊ฒ ํฐ ํ..
-
[Python] ๋ฐฑ์ค - 11047 ๋์ 0 (Greedy)๐ป Algorithm/Python 2021. 10. 3. 17:35
๐ ์ฒซ ๋ฒ์งธ ์๋ (์๊ฐ์ด๊ณผ) - k๊ฐ๋ณด๋ค ํฐ ๋์ ๊ฐ์ ์ญ์ ํ๊ณ ๋์ ๊ฐ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ - while๋ฌธ์ ๋๋ฉด์ ๋์ ๊ฐ ํ๋์ฉ ๋นผ ์ค n, k = map(int, input().split()) coin = [int(input()) for _ in range(n)] coin = list(filter(lambda x: x = 0: k -= i cnt += 1 if k == 0: break print(cnt) โ ๋ ๋ฒ์งธ ์๋ (์ฑ๊ณต) - k๊ฐ๋ณด๋ค ํฐ ๋์ ๊ฐ์ ์ญ์ ํ๊ณ ๋์ ๊ฐ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ - k๋ฅผ ๋์ ๊ฐ์ผ๋ก ๋๋ ๋ชซ์ cnt์ ๋ํด์ ์นด์ดํ n, k = map(int, input().split()) coin = [int(input()) for _ in range(n)] coin = list(filt..