Merged
Conversation
learntosurf
approved these changes
Jan 12, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🌱WIL
카탈란 수를 알게 되었다. 처음에는카탈란 수가 무엇인지 어떻게 이러한 규칙이 생기게 된 것인지 이해가 가지 않았다. 이제야 다양한 DP 무제를 풀어야 하는 이유를 이해할 수 있게 되었다. DP 문제를 풀며 그 안에 주로 사용되는 수학적 공식이나 점화식을 알아두는 것이 나중에 도움이 될 것 같다.deque타입이나 리스트를 복사하고 싶을 때 바로 대입했었는데 그러면 새로 복사되는 것이 아니라 참조하게 되어 내가 원하는대로 코드가 동작하지 않다는 것을 알게 되었다. 특히 deque 타입을 복사하고 싶다면queue.copy()를 사용하거나deque(queue)로 새로운deque를 생성해야 한다는 점을 알게 되었다.🚀주간 목표 문제 수: 5개
프로그래머스 단어 퍼즐: DP / Level4
정리한 링크: (바로가기)
🚩플로우 (선택)
dp배열을 1e9로 초기화하고,dp[0]은 0으로 설정한다.strs를set으로 변환하여 포함 여부를 빠르게 확인한다.i위치에서 최대 5글자까지의 부분 문자열을 확인한다.dp[i]값을 갱신한다.dp[n]이 초기값 그대로라면 문장을 완성할 수 없으므로 -1을 반환한다.🚩제출한 코드
💡TIL
1e9밖에 생각이 안 났는데, sys.maxsize를 이용할 수 있다는 것을 알게 되었다.프로그래머스 올바른 괄호의 갯수: DP / Level4
정리한 링크: (바로가기)
🚩플로우 (선택)
dp를 생성하고 초기값dp[0] = 1을 설정한다.dp[0]은 괄호가 없는 상태로, 유일하게 올바른 괄호가 되는 경우이다.dp[1]부터dp[n]까지 점화식을 적용하여 값을 채운다.dp[i] += dp[j] * dp[i-j-1])을 수행한다.dp[n]을 반환하여n개의 괄호 쌍으로 만들 수 있는 올바른 괄호 문자열의 개수를 반환한다.🚩제출한 코드
💡TIL
카탈란 수를 모르고 문제를 풀게 된다면 규칙이 보이지 않아 매우 풀기 어려운 문제이나,카탈란 수를 알고 문제를 보게 된다면 해당 문제를 규칙을 알고 풀기 때문에 점화식을 금방 쓸 수 있는 문제이다.카탈란 수를 적용하면 된다는 것을 보았지만카탈란 수가 무엇인지 어떻게 이러한 규칙이 생기게 된 것인지 이해가 가지 않았다. 이제야 다양한 DP 무제를 풀어야 하는 이유를 이해할 수 있게 되었다. DP 문제를 풀며 그 안에 주로 사용되는 수학적 공식이나 점화식을 알아두는 것이 나중에 도움이 될 것 같다.카탈란수를 DP를 사용하지 않고 구현할 경우 시간 복잡도는O(2^n)이 된다. 이 문제에서는n ≤ 14로 풀이가 가능하지만 n이 50만을 넘어가면 연산량이 1얼을 넘어가게 된다. 그렇기 때문에 DP로O(n^3)으로 만들 수 있도록 최적화하는 것이 좋을 것 같다.백준 #1874. 스택 수열: 자료구조 / 실버2
정리한 링크: (바로가기)
🚩플로우 (선택)
초기화
deque를 사용해 스택을 구현한다.deque는 양쪽에서 삽입, 삭제가 가능해pop연산이 빠르다.stack: 숫자를 임시로 담을 스택answer: 연산(+,-) 기록용current: 스택에 넣을 현재 숫자 (1부터 시작)flag: 수열을 만들 수 있는지 판단하는 변수반복문 진행
num에 도달할 때까지current를 계속push(+)한다.current가num보다 작으면 계속push하고, 크거나 같아지면 멈춘다.num과 같으면pop(-)하고, 다르면NO를 출력한다.출력
flag가True인 경우 연산이 저장되어 있는answer리스트의 값을 차례로 출력한다.False라면NO를 출력한다.🚩제출한 코드
💡TIL
백준 #17413. 단어 뒤집기 2: 구현 / 실버3
정리한 링크: (바로가기)
🚩플로우 (선택)
< >) 여부를tag플래그로 관리한다.<)이면 플래그를 활성화하고 태그 내용을 그대로answer에 추가한다.>)이면 플래그를 비활성화하고 태그를 닫는다.temp에 저장한다.temp에 남아 있는 단어를 뒤집어서 결과에 추가한다.🚩제출한 코드
💡TIL
deque를 사용하여 삽입/삭제를 효율적으로 처리했지만, 더 간결한 구현 방법도 고민해 볼 필요가 있다.백준 #16953. A → B: 그리디 / 실버2
정리한 링크: [바로가기]
🚩플로우 (선택)
A와 목표 값B를 입력받는다.queue에 시작 값A를 넣고, 연산 횟수를 나타내는cnt를 1로 초기화한다.B와 같다면,cnt를 출력하고 프로그램을 종료한다.2를 곱한다.1을 추가한다.B를 초과하지 않으면 큐에 추가한다.B에 도달하지 못하면-1을 출력한다.🚩제출한 코드
💡TIL
while-else를 활용해 특정 조건에서 자연스럽게 루프를 종료하는 방법도 배울 수 있었다.while문과continue,else를 적절히 사용해 간결하게 문제를 해결한 점이 인상적이었다. 조건을 잘 정리하는 것이 중요하다는 점을 다시 느꼈다.temp를 만들어 큐를 복사하려 했는데,temp = queue로 대입하면 복사가 아닌 참조만 생성된다는 점을 간과했다. 이로 인해temp를 수정할 때queue에도 영향을 미쳐 무한루프가 발생했다. 이를 해결하기 위해queue.copy()를 사용하거나deque(queue)로 새로운deque를 생성해야 한다는 점을 알게 되었다. 이 과정은 문제 풀이와 직접 관련되지는 않지만, 데이터 구조의 동작 방식을 이해하는 데 매우 유익한 경험이었다.deque타입이나 리스트를 복사할 때 참조만 생성되지 않도록 주의해야겠다.