프로그래머스(Programmers)
-
프로그래머스 전력망을 둘로 나누기 C++프로그래머스(Programmers) 2022. 4. 25. 20:58
제한사항 n은 2 이상 100 이하인 자연수입니다. wires는 길이가 n-1인 정수형 2차원 배열입니다. wires의 각 원소는 [v1, v2] 2개의 자연수로 이루어져 있으며, 이는 전력망의 v1번 송전탑과 v2번 송전탑이 전선으로 연결되어 있다는 것을 의미합니다. 1 ≤ v1 < v2 ≤ n 입니다. 전력망 네트워크가 하나의 트리 형태가 아닌 경우는 입력으로 주어지지 않습니다. 입출력 예 nwiresresult 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 4 [[1,2],[2,3],[3,4]] 0 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 입출력 예 #1 다음 그림은 주어진 입력을 해결하는 방법 중 하나를 나타낸 것..
-
프로그래머스 게임 맵 최단거리 C++프로그래머스(Programmers) 2022. 4. 24. 23:47
제한사항 maps는 n x m 크기의 게임 맵의 상태가 들어있는 2차원 배열로, n과 m은 각각 1 이상 100 이하의 자연수입니다. n과 m은 서로 같을 수도, 다를 수도 있지만, n과 m이 모두 1인 경우는 입력으로 주어지지 않습니다. maps는 0과 1로만 이루어져 있으며, 0은 벽이 있는 자리, 1은 벽이 없는 자리를 나타냅니다. 처음에 캐릭터는 게임 맵의 좌측 상단인 (1, 1) 위치에 있으며, 상대방 진영은 게임 맵의 우측 하단인 (n, m) 위치에 있습니다. 입출력 예 mapsanswer [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[..
-
프로그래머스 가장 먼 노드 C++프로그래머스(Programmers) 2022. 4. 22. 22:23
=> BFS문제입니다. => 각 노드들이 맺고 있는 관계들을 벡터로 표현하였습니다. => 이를 vector로 표현하거나 배열로 하거나 편하신대로 하면 됩니다. => 해당 문제에서는 노드의 개수와 간선의 개수가 20,000개 , 50,000개 이므로 벡터를 사용하여 공간의 낭비를 줄였습니다. => 간선들을 표현한 이후에는 항상 사용하던 BFS를 사용하여 문제를 해결하였습니다. https://codingham.tistory.com/168 DFS, BFS code =>BFS 와 DFS code를 사용하기 위해 미리 정리해두었습니다. //int dist[100001]={0}; //bool check[100001];//갔다온지 확인하는 행렬 bool arr[MAX][MAX]; //인접행렬 vector list[M..
-
프로그래머스 영어 끝말잇기 C++프로그래머스(Programmers) 2022. 4. 21. 22:03
제한 사항 끝말잇기에 참여하는 사람의 수 n은 2 이상 10 이하의 자연수입니다. words는 끝말잇기에 사용한 단어들이 순서대로 들어있는 배열이며, 길이는 n 이상 100 이하입니다. 단어의 길이는 2 이상 50 이하입니다. 모든 단어는 알파벳 소문자로만 이루어져 있습니다. 끝말잇기에 사용되는 단어의 뜻(의미)은 신경 쓰지 않으셔도 됩니다. 정답은 [ 번호, 차례 ] 형태로 return 해주세요. 만약 주어진 단어들로 탈락자가 생기지 않는다면, [0, 0]을 return 해주세요. 입출력 예 nwordsresult 3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe..
-
프로그래머스 조이스틱 C++프로그래머스(Programmers) 2022. 3. 22. 00:50
제한 사항 name은 알파벳 대문자로만 이루어져 있습니다. name의 길이는 1 이상 20 이하입니다. 입출력 예 name return "JEROEN" 56 "JAN" 23 => 풀이는 아래 그림으로 첨부하겠습니다. #include #include using namespace std; int solution(string name) { int answer = 0; int n = name.length(); int turn = n - 1; //조이스틱을 한 방향으로 쭉 움직였을 때 for (int i = 0; i < n; i++) { if (name[i] - 'A' < 14) answer += name[i] - 'A'; else answer += 'Z' - name[i] + 1; int ind = i + 1;..
-
프로그래머스 n^2 배열 자르기 C++프로그래머스(Programmers) 2022. 3. 21. 00:38
#include #include using namespace std; vector solution(int n, long long left, long long right) { vector answer; long divisor=0, mod=0; //나누는 수, 나머지 for(long long idx =left; idx divisor)answer.push_back((mod+1)); else answer.push_back((divisor+1)); } return answer; } 제한사항 1 ≤ n ≤ 107 0 ≤ left ≤ right 수학식..
-
프로그래머스 가운데 글자 가져오기프로그래머스(Programmers) 2022. 3. 20. 23:33
입출력 예 s return "abcde" "c" "qwer" "we => 단순구현문제입니다. => 단어의 길이가 짝수여서 두글자를 반환해야하는 경우는 mid 와 mid-1 에 있는 글자를 반환해주어야합니다. => 이외의 경우에는 mid에 있는 글자를 반환해주어야합니다. => mid : 가운데를 나타내는 s안의 INDEX #include #include using namespace std; string solution(string s) { string answer = ""; int mid = s.size()/2; int sSize = s.size(); if(sSize%2 == 0)//짝수여서 두개를 반환해야하는 경우 { answer += s[mid-1]; answer += s[mid]; } else ans..
-
프로그래머스 비밀지도 C++프로그래머스(Programmers) 2022. 3. 13. 11:46
=> 단순구현문제였습니다. => 10진수로 주어진 숫자를 2진수 숫자로 변환하여 string형 vector 변수로 표현하여야 합니다. string Binary(int num , int digit) // 십진수, 자릿수 { string s = bitset(num).to_string(); // 안에 있는 숫자는 몇자리까지 표현할지를 정한다. string value = s.substr(16-digit); // substr을 통해 필요한 숫자만큼만 쓴다. return value; } => 위는 10진수를 2진수로 표현하는 방법입니다. 필요한 자릿수만큼 사용하기 위해 substr 함수를 이용하였습니다. => 두 string형 vector map1 과 map2를 비교하여 둘중에 하나라도 벽이 있으면 '#'을 ..