본문 바로가기

DP29

[C++/PGS] Lv.2 : 숫자 변환하기 https://school.programmers.co.kr/learn/courses/30/lessons/154538?language=cpp 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr프로그래머스 레벨 2dfs로도 쉽게 풀 수 있지만, 효율성 때문에 dp로 해결해야 하는 문제이다.이전 값으로부터 현재값으로 계산이 가능한 값인지 확인 후, 연산해야 한다. 나의 풀이#include #include #include using namespace std;int solution(int x, int y, int n) { vector dp(y + 1, INT_MAX); dp[x] = 0; for(int i=x.. 2025. 5. 31.
[Javascript/PGS] Lv.4 : 올바른 괄호의 갯수 (DP) https://school.programmers.co.kr/learn/courses/30/lessons/12929 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr프로그래머스 레벨 4.dp긴 한데, 감이 안 잡혀서 질문하기 게시판을 참고했다...ㅎ.ㅎ곱셈 dp 문제는 처음인듯!!!아래 풀이처럼, 괄호 한 쌍을 중심으로()의 안에 들어가는 괄호 쌍, 그리고 밖에 나오는 괄호 쌍경우의 수를 곱하면 된다. 예를 들어서 n=3일때는,() / ()() -> 기준 괄호에 아무것도 들어가지 않음. 바깥에는 2개가 존재하므로 dp[0] * dp[2] = 1*2(()) / () -> 기준 괄호에 1개, 바깥에 1개. dp.. 2025. 5. 8.
[Javascript/PGS] Lv.3 : 경주로 건설 (BFS) https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr프로그래머스 레벨 3.BFS + 삼차원 배열...ㅋㅋㅋㅋㅋ하 ㅠㅠ 이차원배열로 풀다가 삽질하느라 1시간 걸림카카오 기출이라 그런지, 구현하면서 신경써야 할 내용이 정말정말 많았다.삼차원배열 bfs에서 방향에 따라 최솟값을 저장해줘야 하는데,출발점에서는 방향이 상관없기 때문에 이것도 분기처리를 해줘야 했음!!그리고 코너에서는 코너 도로 + 직진도로 모두 필요하기 때문에, 600을 더해줘야 한다. 개인적으로 함정이 많았던 문제라고 생각실력 증진하기 .. 2025. 5. 7.
[C++/PGS] Lv.3 : 가장 긴 팰린드롬 (투포인터/중심확장) https://school.programmers.co.kr/learn/courses/30/lessons/12904# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr프로그래머스 레벨3 팰린드롬 문제여러 방법으로 풀이할 수 있다.대표적으로 dp, 혹은 삼중 반복문으로 해결하는 것 같은데나는 투포인터로 해결했다. 중심에서부터 투포인터를 양옆으로 보내면서 서로 값이 같은지 검사했는데,GPT가 이런 방식을 중심 확장(Center Expansion) 기법이라고 알려줌!! 나의 풀이#include #include using namespace std;int solution(string s){ int answer.. 2025. 4. 25.
[C++/groom] Lv.3 : 거리두기 (DP) https://level.goorm.io/exam/160279/%EA%B1%B0%EB%A6%AC%EB%91%90%EA%B8%B0/quiz/1 구름LEVEL난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.level.goorm.io구름 레벨 3. DP와 경우의 수 전처리 계산값(?)을 적절히 사용해야 한다구름은 이런 유형이 많은가.. 익숙하지 않아서 더 오래걸린다 ㅠㅠ 각 상태 별 경우의 수를 찾아서 dp에 적절히 더해줘야 한다!dp[i][j] -> i번째 줄의 상태가 j(0~5)일 때의 누적 경우의 수로 해결했다. 나의 풀이#include #include using namespace std;int main() { int n=0; int mod = 100000007; int dp[10.. 2025. 4. 18.
[C++/PGS] Lv.3 : 연속 펄스 부분 수열의 합 (DP) https://school.programmers.co.kr/learn/courses/30/lessons/161988 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr프로그래머스 레벨 3.cpp 배열 선언도 까먹어버려서 .. 큰일났다 ㅋㅋ다시 다 공부해야지 이 문제는 dp로 풀어야하는데, 아이디어 떠올리기기ㅏ 조금 힘들었다펄스 배열과 연속 부분수열을 보고 sliding window로 풀어야하나? 싶었는데풀다 보니 left를 옮길 조건이 없어서 이게 아닌가보다 싶었다.그래서 DP로 최댓값을 저장하면서 풀었다! 일차원 배열을 두개 쓰려다가, 더 효율적인 코드를 위해 이차원 배열로 바꾸었다.dp[][0] -> 펄.. 2025. 4. 15.
728x90
반응형