๋ฌธ์ https://app.codility.com/programmers/lessons/5-prefix_sums/genomic_range_query/ DNS ์ํ์ค๋ A, C, G, T๋ก ๋ํ๋ผ ์ ์๊ณ ๊ฐ๊ฐ์ impact factor๋ 1, 2, 3, 4์ด๋ค. P, Q ๋ฆฌ์คํธ๋ ๊ฐ๊ฐ ์์๊ณผ ๋์ ์ ๋ณด๋ฅผ ๊ฐ์ง๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค. ๋ง์ฝ CAGCCTA๋ผ๋ DNS ์ํ์ค๊ฐ ์ฃผ์ด์ง ๋ P[0] = 2, Q[0] = 4๋ผ๋ฉด DNS ์ํ์ค ์ค 2~4์ ํด๋นํ๋ ๊ฐ์ด ํ์ ๋ฒ์์ด๋ค. (CAGCCTA) ํ์ ๋ฒ์ ์ค ๊ฐ์ฅ ์์ impact factor๋ฅผ ๊ฐ์ง๋ ๊ฐ์ ์ฐพ์์ ๋ฐํํ๋ฉด ๋๋ค. ๋ฌธ์ ํ์ด prefix sum์ผ๋ก ํ ์ ์์ง๋ง, ์์ธ ์ฒ๋ฆฌ๋ก๋ ํด๋น ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค. ์ฝ๋ def solution(S, P, Q..
๋ฌธ์ https://app.codility.com/programmers/lessons/5-prefix_sums/count_div/ A, B ์ฌ์ด์ ์๋ค ์ค K๋ก ๋๋์ด ๋จ์ด์ง๋ ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ํ์ด ์ํ์ ์ผ๋ก ํ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ค. ์ฝ๋ def solution(A, B, K): answer = B // K - A // K if A % K == 0: answer += 1 return answer
๋ฌธ์ https://app.codility.com/programmers/lessons/4-counting_elements/perm_check/ ๋ฆฌ์คํธ์ ๊ฐ์ด ์์ด์ธ์ง ํ์ธํ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ํ์ด Missing Integer์ ๋์ผํ ๋ฐฉ์์ผ๋ก ํ๋ฉด ๋๋ค. ์ฝ๋ def solution(A): sort = sorted(A) check_num = 1 for num in sort: if num == check_num: check_num += 1 return 1 if len(A) == check_num - 1 else 0
๋ฌธ์ https://app.codility.com/programmers/lessons/4-counting_elements/missing_integer/ ๋ฆฌ์คํธ๊ฐ ์ฃผ์ด์ง๋ฉด, ๋ฆฌ์คํธ์ ์กด์ฌํ์ง ์๋ ๊ฐ์ ์ฐพ๊ฑฐ๋ ๋ฆฌ์คํธ์ ๊ฐ์ด ๋ชจ๋ ์กด์ฌํ๋ ๊ฒฝ์ฐ์๋ ๋ค์์ ์๋ฅผ ๋ฐํํ๋ค. ๋ฆฌ์คํธ์ ์์๋ง ์กด์ฌํ๋ ๊ฒฝ์ฐ์๋ 1์ ๋ฐํํ๋ค. ๋ฌธ์ ํ์ด ์ ๋ ฌํ์ง ์๊ณ ๋ฌธ์ ๋ฅผ ํ๋ ค๊ณ ํ์๋๋ ์ฒดํฌ ๋ฆฌ์คํธ๋ฅผ ํ์ฉํ๊ณ , ์ฝ๋๋ ๋ณด๊ธฐ ํํ๊ฒ ๋ณํ๋ค. ํ์ง๋ง ์ ๋ ฌ์ ์ฌ์ฉํ๋ฉด ์์ฃผ ๊ฐ๋จํ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ์ฝ๋ def solution(A): sort = sorted(A) lost = 1 for num in sort: if num == lost: lost += 1 return lost
๋ฌธ์ https://app.codility.com/programmers/lessons/4-counting_elements/max_counters/ ๋ฆฌ์คํธ์ ๊ฐ์ด N์ดํ ์ผ ๊ฒฝ์ฐ์๋, ํด๋นํ๋ ์ธ๋ฑ์ค์ ๊ฐ์ 1 ์ฆ๊ฐ์ํค๊ณ N๋ณด๋ค ํฐ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ์ธ๋ฑ์ค ๊ฐ์ ํ์ฌ ๊ฐ์ max๋ก ๋ณ๊ฒฝํ๋ค. ๋ฌธ์ ํ์ด ๊ฐ ์ธ๋ฑ์ค์ ๊ฐ์ ์ถ๊ฐํ๋ค๊ฐ, N๋ณด๋ค ํฐ ๊ฐ์ด ๋ฐ์ํ ๊ฒฝ์ฐ answer = max(answer) * N๋ก ์ฒ๋ฆฌํ์๋๋ ํจ์จ์ฑ์ ํต๊ณผํ์ง ๋ชปํ์๋ค. def solution(N, A): answer = [0] * N for idx in A: print(answer) if idx > N: answer = [max(answer)] * N else: answer[idx - 1] += 1 return answer ์ฝ..
๋ฌธ์ https://app.codility.com/programmers/lessons/4-counting_elements/frog_river_one/ ๊ฐ๊ตฌ๋ฆฌ๊ฐ ๊ฐ๊ณ ์ ํ๋ ์์น๊ฐ X๋ผ๋ฉด, X์ ๋๋ฌํ๊ธฐ ์ํด ํ์ํ ๋ชจ๋ ๊ตฌ๊ฐ์ ๊ฑฐ์ณ์ผ ํ๋ค. ๋ฌธ์ ํ์ด ์นด์ดํธ์ ์ฒดํฌ ๋ฆฌ์คํธ๋ฅผ ํ์ฉํ์ฌ์ ๋ฌธ์ ๋ฅผ ํ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ค. ์ฝ๋ def solution(X, A): check = [False] * X cnt = 0 for i in range(len(A)): if not check[A[i] - 1]: check[A[i] - 1] = True cnt += 1 if cnt == X: return i return -1 ์ง๋์จ ๊ตฌ๊ฐ์ ํ์ธํ๊ธฐ ์ํด ์ฒดํฌ๋ฆฌ์คํ ํตํด ํ์ธํ๋ค. ์นด์ดํธ๋ฅผ ํ์ฉํด ์นด์ดํธ ๊ฐ์ด ๊ฐ๊ณ ์ ํ๋ ์์น์..
๋ฌธ์ https://app.codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/ ๋ฐฐ์ด์ ๋ค์ฏ๊ฐ์ ๊ฐ๋ค์ด ์์ผ๋ฉด ๊ฐ ๊ตฌ๊ฐ ๋ณ๋ก ๋๋์ด ๊ฐ์ ํฉ์ฐ ํ์ ์ฐจ๋ฅผ ๊ณ์ฐํ์ฌ ๊ฐ์ฅ ์์ ์ฐจ๊ฐ ๋๋ ๊ฐ์ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ํ์ด ์ฒ์์๋ list๋ฅผ ์ฌ๋ผ์ด์ฑํ์ฌ ๋ฌธ์ ์ ์ ๊ทผํ์๋ค. ์ฌ๋ผ์ด์ฑ์ผ๋ก ์ธํ ์ค๋ฒํค๋๊ฐ ๊ทธ๋ ๊ฒ ํฐ์ง๋ ์ฒ์ ์์๋ค. def soultion(A): min_diff = None for i in range(len(A) - 1): diff = abs(sum(A[:i + 1]) - sum(A[i + 1:])) if min_diff is None: min_diff = diff else: min_diff = min(min_diff, diff..
๋ฌธ์ https://app.codility.com/programmers/lessons/3-time_complexity/perm_missing_elem/ ๋ฐฐ์ด์ ์๋ ์์๋ค์ ์๋ N์ด๊ณ ๊ทธ ์ค ์๋ ์์๋ฅผ ์ฐพ์์ผ ํ๋ค. ์๋ฅผ ๋ค์ด 1, 2, 3, 5๋ผ๋ฉด ๋น ์ง ์๋ 4์ด๋ค. ๋ฌธ์ ํ์ด Counter๋ฅผ ํ์ฉํ๋ฉด ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค. ์ฝ๋ from collections import Counter def solution(A): check = [num + 1 for num in range(len(A) + 1)] return list(Counter(check) - Counter(A))[0]