전체 글 111

[프로그래머스 LV4] - 사칙연산(DP) C++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/1843 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 dp문제인 걸 알고 풀어도, 어떤 데이터를 dp 테이블에 저장해야할 지 모르면 말짱 꽝이다. 처음엔 지난 번에 했던 방법대로 possible_set을 만들어서 해결하면 될 것 같다는 생각을 했지만, 먹히지 않았다. 해결법은 다음과 같았다. 1. 2차원 dp테이블 2개 이용한다(mindp, maxdp). 2. 괄호의 개수를 늘려가면서 2차원 dp테이블에 값을 저장한다. 3. dptabl..

[프로그래머스 LV3] - 여행경로(dfs) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43164# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 dfs로 풀 수 있었다. 가장 고민했던 부분은 알파벳 순서가 낮은 경로를 통해야만 전 경로를 돌 수 있는 경우였다. 이것을 어떻게 처리해야할 지 감이 안잡혔다. dfs로 하면 될 거 같긴한데, 자꾸 에러가 나서 gpt에게 여쭤봤다. 코드가 간결하고 명확햇다. dfs를 돌면서 원소를 pop해버리면 경로가 온전히 저장되지 않을 거라고 생각했는데, dfs에 대한 오해가 있었다. 어차피 ..

[프로그래머스 LV3] - 단속카메라(그리디) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42884# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 진출 기준으로 정렬해야하는데, 진입 기준으로 정렬해서, 계속 틀렸다. 진입 기준으로 정렬하는 경우, 중간에 진출이 빠른 케이스가 들어오면(예시 - [[0, 10], [1, 10], [2, 3], [4, 5]]) 그것까지 포함해 하나로 처리해버려서 문제가 생긴다. 코드 #include #include #include #include using namespace std; int sol..

카테고리 없음 2024.02.26

[프로그래머스 LV3] - 섬 연결하기(prim's algorithm) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42861 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 prim's algorithm을 사용해 풀었다. 문제에서 vertice 숫자의 범위를 제시하지 않아 adjecency list를 사용하기 애매해서, adjencency map을 사용했다. 코드 #include #include #include #include #include #include using namespace std; class Edge{ public: int to; int ..

카테고리 없음 2024.02.26

[프로그래머스 LV3] - 섬 연결하기(kruskal) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42861#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 kruskal을 사용했다. kruskal 알고리즘은 다음과 같이 구현한다. 그래프를 weight 오름차순으로 정렬하고, weight가 작은 순서대로 edge를 추가한다. 이 때, edge의 각 vertice가 두 개의 sub set을 cross하는 지를 알아야한다. 만약, 같은 subset에 있다면, 그 edge는 MST(minimum spanning tree)에 포함되지 않..

[프로그래머스 LV2] - 큰 수 만들기(그리디) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42883# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 .. 코드 #include #include #include #include using namespace std; //k가 1000000이고 number가 1000000이면, //시간 내에 불가능. -> 중첩 불가 //만약 k가 4라면, //처음 올 숫자는 앞에서 5개 중에 가장 큰 수. //두 번 째로 올 숫자는 앞에서 선택된 숫자 자르고 나서 //남은 k+1개 중 가장 큰 수. ..

[프로그래머스 LV3] - 입국심사(이분탐색) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 through GPT.. 코드 #include #include #include #include #define MAX 1000000000 using namespace std; long long solution(int n, vector times) { long long answer = 0; long long left = 0; long long right = *max_element(tim..

[프로그래머스 LV3] - N으로 표현(DP - possible_sets) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 시간 내에 풀 수 있는 방법이 도저히 생각나지 않아서 GPT에게 물어봤다. 코드를 보고 놀랐다. 처음 보는 접근방식이었다. 2차원 배열 dp를 이용해 풀 수 있을까 생각해봤지만, 그 방법이 떠오르지 않았는데 코드를 보고 이마를 한 대 쳤다. n이 8번 가는 동안, 그 사이 만들어진 수식들을 저장한다. 다음 i번째에는 i-j와 j 번째 배열에 있는 수식들을 이용해 i번째 possibl..

[프로그래머스 LV3] - 가장 먼 노드(그래프) c++

문제 https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근방법 2차원 배열을 쓰려고 생각해봤는데, 시간복잡도가 안될 거 같았다. 그래서 linked list를 사용해서 풀었다. 노드 1을 먼저 큐에 담고, bfs방식으로 그래프를 탐색했다. 탐색하면서, visit배열에 1로부터의 거리를 저장했다. 코드 #include #include #include #include #include using namespace std; class node { pu..