[99클럽 5기] 코딩테스트 스터디를 마치며
·
항해99
길다면 길고, 짧다면 짧은 5주간의 스터디가 끝이났다.25일 연속으로 코딩테스트 준비를 위한 문제를 한 문제씩 풀며 총 25개의 문제를 해결하였다. 이번 99클럽 스터디를 시작하기 전에 다짐하였던 하나의 목표가 있었는데, 바로 25일동안 25 문제 풀기와 25개의 TIL을 작성하는 것이었다. 과연 이를 완벽하게 수행해냈는지 결과를 확인해보자.총 문제 풀이 25 / 누적 TIL 제출 23 참으로 아쉬운 수치이다. 이틀만 더 TIL을 작성하여 제출했다면 정말 완벽했을텐데 정말 아쉽다.하지만 25문제를 하루도 빠지지 않고 문제를 해결하여 LEVEL 5를 달성하였다는 것에 만족하자. 5주간의 대 장정동안, TIL을 작성하고, 알고리즘을 공부하며 나의 코딩 실력에 향상을 기대하였는데 과연 얼마나 달라졌을지 궁금하..
[99클럽 5기] 코딩테스트 스터디 25일차 TIL - 동적 계획법, 해시맵
·
항해99
[Gold V] 무한 수열 - 1351 [문제 링크](https://www.acmicpc.net/problem/1351)🗝️오늘의 학습 키워드 (Keyword)다이나믹 프로그래밍 (DP)딕셔너리💻본인의 언어로 내용 정리 (Today I Learned)역시나 전형적인 DP 알고리즘을 이용하여 해결할 수 있는 문제이다.이전의 결과값을 이용해 현재의 값을 알아내는 방식을 활용하여 문제를 해결하기 위해선 재귀 함수 호출이 필요하다. N=0일때의 값이 1인점을 이용하여 N / P, N / Q의 값이 0이 나오도록 함수를 재귀 호출하면 원하는 값을 구할 수 있을 것이다. An을 구하기 위해, 수열을 저장할 구조를 만들어야 하는데, 기존의 리스트를 사용하기엔 수열의 순서가 인덱스 번호와 일치하지 않는다. 이를 해..
[99클럽 5기] 코딩테스트 스터디 24일차 TIL - 동적 계획법
·
항해99
[Gold V] 합분해 - 2225[문제 링크](https://www.acmicpc.net/problem/2225)🗝️오늘의 학습 키워드 (Keyword)다이나믹 프로그래밍 (DP)💻본인의 언어로 내용 정리 (Today I Learned)정수 N이 주어졌을 때, 0 ~ N까지의 수를 이용해 K개의 정수로 N을 만드는 경우의 수를 구하는 문제이다.먼저 K=1일때, 모든 수에서 경우의 수는 1이다.또한 N=1일때, 경우의 수는 K개이다.이를 이용해 N=2일때를 예측해보자. 2는 1+1, 0+2, 2+0 3개의 경우의 수가 있을 것이다. 이때 K=1, K=2 두 가지의 경우를 살펴보자K=1 : 2 -> 1가지K=2 : 1+1, 0+2, 2+0 -> 3가지이때 K=3이라면?1+1+0, 0+0+2, 2+0+0..
[99클럽 5기] 코딩테스트 스터디 23일차 TIL - 동적 계획법
·
항해99
[Gold V] LCS - 9251 [문제 링크](https://www.acmicpc.net/problem/9251)🗝️오늘의 학습 키워드 (Keyword)다이나믹 프로그래밍 (DP)💻본인의 언어로 내용 정리 (Today I Learned)한 문자열을 기준으로, 다른 하나의 문자열의 한 글자씩 추가해가며 LCS가 몇 개인지를 세는 방식으로 문제에 접근하였다. 🗒️제출 코드# 9251 LCSimport sysinput = sys.stdin.readlines1 = list(input().rstrip())s2 = list(input().rstrip())lcs = [[0] * (len(s2) + 1) for _ in range(len(s1) + 1)]for i in range(1, len(s1)+1): ..
[99클럽 5기] 코딩테스트 스터디 22일차 TIL - 동적 계획법
·
항해99
[Silver II] 가장 긴 증가하는 부분 수열 - 11053 [문제 링크](https://www.acmicpc.net/problem/11053)🗝️오늘의 학습 키워드 (Keyword)다이나믹 프로그래밍 (DP)💻본인의 언어로 내용 정리 (Today I Learned)주어진 수열에서 증가하는 부분을 찾아 그 길이를 출력하는 문제이다. 가장 긴 증가하는 부분이라는 말이 조금 애매할 수 있는데, 나는 그냥 쉽게 생각해서 이전 수가 증가한 양 보다 더 크면 긴 증가하는 부분이라 생각하였다. 또한, 얼마가 증가하는지는 상관없이, 무작정 커지기만 한다면 긴 증가하는 부분이라 생각하였다. 길이를 구하는 문제이기 때문에 최초 길이 1에서 부터 시작하여, 다음 숫자가 크다면 길이가 증가하는 방식으로 알고리즘을 설..
[99클럽 5기] 코딩테스트 스터디 21일차 TIL - 동적 계획법
·
항해99
[Silver III] 피보나치 함수 - 1003 [문제 링크](https://www.acmicpc.net/problem/1003)🗝️오늘의 학습 키워드 (Keyword)다이나믹 프로그래밍(DP)💻본인의 언어로 내용 정리 (Today I Learned)피보나치 수열이란, 이전의 결과값과 현재의 결과값의 합이 다음의 결과가 되는 수식을 말한다. 이번 문제는 이 피보나치 수열에서 0과 1이 나오는 횟수 즉, fibonacci(0)과 fibonacci(1)이 호출되는 횟수를 구하는 문제이다. fib(3)을 예시로 들면, fib(2)와 fib(1)의 합이다. fib(2)는 fib(1)과 fib(0)의 합이고, 이 경우 0는 한 번, 1은 두 번 호출되었다. 따라서 출력값은 1 2가 된다. 그렇다면 fib(4..