728x90 Algorithm/프로그래머스 알고리즘26 [프로그래머스] 프린터 문제 분석 무식하게 풀면 될것 같다. 1. 굳이 큐를 안쓰고 리스트를 사용 했다. 2. 리스트 3개를 만든다. A: 순차적으로 우선순위가 저장된 리스트 B: 우선순위가 내림 차순으로 정렬된 리스트 C: print 목록 리스트 3. A 의 첫번째 우선순위와 B 의 우선순위가 같다면 출력 그렇지 않으면 A 의 앞에걸 뒤에 저장 동시에 C 도 동일한 방법으로 업데이트. 4. 만일 A 의 우선 순위와 B 의 우선순위가 같다면 앞에있는걸 삭제 하고 삭제 된것이 원하는 target 이라면 index를 찾고 중단한다. 구현 import java.util.*; import java.util.LinkedList; import java.util.Queue; import java.util.Collections; class .. 2021. 7. 23. [프로그래머스] 타겟 넘버 문제 분석 완전 탐색 문제이다 정수인 1 을 바꿔 가면서 더하기 빼기를 해준다. 그러다가 5개를 다 더했을때 값이 원하는 값이면 1을 더해 준다. 완전 탐색인데 단순 완전 탐색이 아니라 음수 양수를 따져서 탐색을 해줘야 한다. 그렇다면 어떻게 하면 될까? 재귀 함수로 구현을 한다. 인덱스를 증가 해주면서 재귀함수안에서 두번 호출을 해준다. 정수일때와 음수 일때. 아래 그림 처럼 리턴이 될때 정수 음수 번갈아 가며 탐색을 한다. 구현 import java.util.*; class Solution { public int solve(int[] numbers, int target, int sum, int idx) { if (idx == numbers.length) { if(sum == target) { retu.. 2021. 7. 23. [프로그래머스] 키패드 누르기 문제 분석 내가 중요하게 생각한 분석은 다음과 같다. 1. 거리를 구한다. - 처음에는 BFS 를 써야 되나 싶었는데, 직사각형이니 거리 구하는 공식으로 거리를 구했다. - 점 0,0 에서 다른점 1,1 의 거리를 구하려면 - |x1 - dx1| + |y1 -dy1| 간단하다. 2. 손가락 위치를 갱신한다. - 어떤 손가락을로 눌렀는지 따라 해당 손가락 위치를 업데이트 해준다. 구현 - C++ 로도 구현을 하려 했으나 음.... 크게 차이가 없어서 java로 만 했다. class Solution { private int mDRightX = 0; private int mDRightY = 0; private int mDLeftX = 0; private int mDLeftY = 0; private int mT.. 2021. 7. 22. [프로그래머스] 네트워크 문제 분석 친절하게 제목에 dfs/bfs 라고 쓰여있다. 탐색으로 문제를 풀면 될것 같다. 1 - 2 - 3 노드 가 연결 되어 있다고 하자. 그렇다면 1번 방문, 2번 방문, 3번 방문 하면서 방문을 하면 0 으로 만들어 주고 또 방문 하지 않도록 한다. 그렇 한번 순회를 할때마다 1씩 카운터를 올려 주면 총 노드의 집합이 몇개 인지 구 할수 있다. 코드 #include #include using namespace std; bool solve(int node, vector &computers) { if (!computers[node][node]) { return false; } computers[node][node] = 0; for (int i = 0; i < computers.size(); i++ ).. 2021. 7. 15. 이전 1 2 3 4 5 6 7 다음 728x90 반응형