반응형

프로그래머스 41

[L3] 프로그래머스 가장 먼 노드 C++ 다익스트라, 최단 경로

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하는 문제다익스트라로 모든 노드까지의 최단 거리를 구한 후, 해당 노드 중 거리가 최대값인 노드를 찾는다.최대값과 동일한 값을 같는 거리를 가진 노드의 개수를 출력해 주었다.  전역 변수nodes : 노드의 개수를 저장할 변수lst : 노드간 인접 리스트를 저장할 정수형 벡터 배열, 노드의 최대 갯수인 2만보다 크게 해주어야 한다.Pos : 다익스트라의 탐색용 구조체, 우선순위 큐용 오름차순 cmp함수를 정의했다. 함수1. dijkstraint dijkstra() 1번 노드로부터 모든 노드까지의 거리를 ..

[L3] 프로그래머스 여행경로 C++ DFS, 해시맵, 우선순위 큐

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 해시맵을 통해 각 공항을 저장해 주고, ICN으로 부터 출발해 모든 항공권을 사용하여 모든 도시를 방문하는 문제예제의 경우 모두 맞았지만 테스트 케이스에서 반만 맞는 경우가 생겼다.answer에 공항 이름을 추가하는 로직을 후위로 위치하니 AC를 맞게 되었다.  전역 변수dic : 각 공항에서 이동할 수 있는 공항 정보를 오름차순으로 정렬하는 해시맵answer : 공항에 방문한 순서를 저장할 문자열 벡터 함수1. dfsvoid dfs(string s) 깊이 우선 탐색을 통해 공항을 방문하며 정답에 기록할 함수매개변수 s를 공항의 이름으로 받는다. 초기..

[L3] 프로그래머스 아이템 줍기 C++ BFS, 좌표 확장

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 2차원 좌표 평면에서 주어진 사각형의 테두리만 타서 목표에 도달하여 아이템을 줍는 문제선분을 타고 이동하는 문제는 대체로 좌표를 확장하여 문제를 푸는 것 같다.  전역 변수v : 이동한 좌표를 방문처리를 해주기 위한 정수형 배열, 최대 크기의 2배인 101 * 101로 초기화 한다.lst : 맵 정보를 초기화 하기 위한 정수형 배열, 크기는 상동dx, dy : 상하좌우 이동을 위한 방향 배열Pos : 너비 우선 탐색 시 현재 위치 정보와 소요 시간을 저장하는 구조체 함수1. bfsint bfs(int sx, int sy, int ex, int ey) ..

[L3] 프로그래머스 단어 변환 C++ 백트래킹, 완전 탐색

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 시작 단어에서 한 번에 한 개의 알파벳만 바꿔 words에 있는 단어와 교체하여 목표 단어로 변경하는 문제백트래킹을 통한 완전 탐색으로 적절한 가지치기를 해가며 재귀를 실행하면 된다.  전역 변수n, len, ans : 입력되는 문자의 길이 n, words벡터의 길이 len, 정답을 저장할 변수 ansv : 이미 변경한 단어에 방문 처리를 하기 위한 정수형 변수, 벡터의 최대 길이 50으로 크기를 초기화한다. 함수1. btvoid bt(int level, string begin, const string& target, const vector words..

[L2] 프로그래머스 게임 맵 최단거리 C++ 너비 우선 탐색, BFS

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 아주 기초적인 BFS 문제였다. 맵의 왼쪽 상단에서 오른쪽 하단으로 이동하고, 걸린 시간을 출력하는 문제  전역 변수dx, dy : 상하좌우 4방향으로 이동하기 위한 방향 배열v : BFS시 방문 처리 및 걸린 시간을 계산하기 위한 정수형 배열, 맵의 최대 크기인 100 * 100으로 초기화n, m : 맵의 행의 수 n, 맵의 열의 수 mPos : BFS시 현재 위치 정보를 저장하기 위한 구조체 함수1. bfsint bfs(const vector>& maps) 맵을 탐색하며 우측 하단으로 갈 수 있는지 여부와, 걸리는 시간을 리턴하는 함수구조체 Pos..

[L3] 프로그래머스 단속카메라 C++ 우선순위 큐, 그리디 알고리즘

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하는 문제우선순위 큐를 두개 사용하여 문제를 해결했다.  전역 변수Wait : 아직 고속도로에 진입하지 않은 차량의 정보를 담을 구조체, 진입 지점을 기준으로 오름차순 정렬Ing : 고속도로에 주행중인 차량의 정보를 담을 구조체, 진출 지점을 기준으로 오름차순 정렬 함수없음  문제풀이정수형 변수 n에 routes의 size를 초기화 해준다.Wait, Ing 구조체 타입의 우선순위 큐 pq1, pq2를 초기화 해준다.pq1에 routes에 존재하는 진입,..

[L3] 프로그래머스 섬 연결하기 C++ MST, 최소 신장 트리, 유니온 파인드

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 알고리즘 고득점 Kit 그리디에서 왜 MST가 나오는지는 모르겠지만 기본적인 문제라 쉽게 풀었다.  전역 변수nodes : 유니온 파인드를 통해 섬의 그룹화를 하기 위한 정수형 배열, 크기는 섬의 최대 100으로 설정한다.Bridge : 간선 정보를 저장하기 위한 구조체, 내부적으로 sort를 해주어야 하니 내부에 cmp함수를 작성한다. 함수1. Findint Find(int a) 매개변수로 받은 노드의 그룹 정보를 찾기 위한 함수매개변수로 노드 번호를 변수 a로 받아준다.nodes배열의 a인덱스가 a라면 a를 리턴해 준다.nodes배열의 a인덱스가 ..

[L2] 프로그래머스 구명보트 C++ 덱

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음엔 우선순위 큐를 두개 사용하여 min_heap, max_heap으로 구현했으나 두명 이상을 태우지 못할 때 max_heap에서부터 제거를 하다보니 max_heap이 empty상태일때 min_heap에서 그리디하게 사람을 태우지 못했다.고민을 좀 하다가 덱을 쓰면 쉽게 문제가 풀릴 것 같아서 사용했더니 쉽게 AC를 받았다.  전역 변수없음  함수없음  문제풀이정수형 변수 n에 people벡터의 사이즈를 저장해 주고, 정수형 덱 deq을 초기화 해준다.n개의 사람 무게를 deq에 추가해 주고, deq을 오름차순으로 정렬해 준다.deq이 빌때까지 반복..

[L2] 프로그래머스 큰 수 만들기 C++ 스택

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하는 문제  전역 변수없음  함수없음  문제풀이정수형 변수 n에 매개변수로 받은 문자열 number의 size를 저장해 준다.문자형 벡터 stack을 초기화 하고 n번의 for문을 개행해 준다.stack이 비지 않았고, 스택의 맨 뒤의 문자가 현재 문자보다 작고 k가 있을경우 스택의 맨뒤 요소를 빼고 k를 감소시킨다.스택에 현재 문자를 추가해 준다. for문이 종료될 때까지 해당 작업을 반복해 준다.for문이 종료되었다면 이제 k가 남아있을 경우를 처리해 주어야 한다.남은 k개 만..

[L2] 프로그래머스 모음사전 C++ 해시맵, 백트래킹

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 백트래킹을 통해 각 모음 조합이 몇번째 단어인지 구해 해시맵에 기록해 놓고 입력받은 문자열을 key로 하는 해시맵의 value를 리턴하는 문제  전역 변수dic : 모음 조합으로 만든 단어를 key로 하고, 해당 단어가 몇번째 단어인지를 value로 받는 해시맵s : 백트래킹에서 모음의 종류 AEIOU를 순회하기 위한 문자열idx : n번째를 기록하기 위한 변수, 초깃값은 0이다. 함수1. btvoid bt(int level, string str) 각 재귀 단계마다 현재 문자열을 해시맵에 n번째임을 기록하기 위한 함수매개변수로 현재 재귀 단계 leve..

728x90
반응형