본문 바로가기

Algorithm/Programmers6

[Lv.3] 타겟 넘버 출처.프로그래머스 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제는 어렵지 않다.주어진 숫자배열을 처음부터 마지막까지 더하기 혹은 빼기를 해서 타겟값과 같은지 확인하면 된다. #include using namespace std;int T, sum, result;void cal(vector& ref, int idx) { if (ref.size() == idx) { if (sum == T) // 타겟넘버와 지금까지의 연산의 결과 같으면, 카운팅 1 result++; return ; } for (int i = 0 ; i numbers.. 2024. 5. 20.
[Lv.3] 아이템 줍기 출처. 프로그래머스 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제를 풀다가 여러 난관에 부딪혔던 문제.... 난관 1. 사각형이 겹쳐 있을때, 태두리 둘레를 어떻게 알지? - 해결방법 : 사각형 좌표가 주어지면 넓이를 모두 1로 칠한다. 그리고 테두리를 제외한 나머지를 0으로 바꾼다. 주어진 모든 사각형을 1로 칠한 모습 맨 아래사각형 테두리만 제외하고 0으로 칠한 모습 그 다음 사각형 테두리 제외하고 0으로 칠한 모습 다른 사각형도 반복하면, 테두리만 남는다! 이 맵을 가지고 캐릭터 위치에서 출발하여 아이템까지 가는 최단 경로를 DFS로 구하면 되는지.. 2024. 5. 20.
[Lv.3] 여행경로 출처. 프로그래머스 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 기본적인 DFS 방식으로 풀면 된다.ICN로 시작해서 모두 방문할 수 있는 경로를 저장한다.그 이후에 알파벳 순서가 가장 빠른것이 정답이다.아래 코드의 주석 참고~#include #include #include #include using namespace std;bool visitable[10000];vector> answerList; // 경로를 저장하는 경로 리스트size_t totalSize = 0;void DFS(vector>& ticket, vector& answer) { if .. 2024. 5. 20.
[Lv.3] 단어 변환 출처.프로그래머스 기본적인 DFS방식으로 문제를 풀면되고, 어렵지않다.begin과 words의 요소를 비교하는 방식은 단순히 처음부터 한글자씩 비교해 가면서 다른글자숫자를 셌다.diffCnt가 1일 경우에 vector에서 해당 위치를 삭제하고 동일하게 DFS를 반복한다. DFS가 종료된 이후에는 동일한 위치에 복구하고 다음 위치를 비교하는 식으로 구현했다.구현사항은 주석 참고!#include #include using namespace std;int answer = 0;string g_target;void DFS(string begin, vector& words, int count) { if (begin == g_target) { // 탈출문! if (answer > count) .. 2024. 4. 10.
[Lv.3] 네트워크 출처. 프로그래머스 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 컴퓨터 갯수가 주어지고, 연결 정보가 주어진다.주어진 정보로 총 몇개의 네트워크가 구성되는지 구하는 문제이다.이 문제는 단순히 DFS로 풀면 간단하다. 이미 한번 방문했는지 저장하는 변수를 두고, 각 노드에서 연결된 모든 노드들을 반복해서 방문하면 된다. DFS & 재귀로 풀면 된다. 내용은 주석 참고#include #define MAX (200U)using namespace std;bool visited[MAX];void DoVisit(size_t cur, int n, vector>&.. 2024. 4. 9.
[Lv.2] 게임 맵 최단거리 출처. 프로그래머스 DFS/BFS에 해당 하는 문제로 문제 자체는 어렵지 않았다. 나는 접근을 DFS로 생각하여 모든 루트를 다 돌고나서 최소거리를 반환하는 식으로 코드를 구현하였다. #include #include using namespace std; int dy[] = {1, 0, -1, 0}; int dx[] = {0, 1, 0, -1}; size_t n, m; int ret = -1; vector map; void moving (int y, int x, int cnt) { if (x == (n-1) && y == (m-1)) { if (ret == -1) { ret = cnt; return ; } if (ret > cnt) ret = cnt; return ; } for (size_t idx = 0.. 2024. 4. 7.