목록Problem Solving (204)
지우너

1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/869712. 풀이2-1. 문제를 읽고 이해하기n개의 송전탑(정점)이 전선(간선)을 통해 하나의 트리 형태로 연결되어 있음.전선(간선)들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할(=간선 1개를 제거해서 2개의 트리로 분할)이때, 두 전력망이 갖게 되는 송전탑(정점)의 개수를 최대한 비슷하게 맞추고자 한다. 송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때,두 전력망이 가지고 있는 송전탑 개수의 차이(절대값)를 return 하도록 solution 함수를 완성해주세요. 2-2...
문제https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이backtracking을 이용해서 순열을 만들어야 한다는 걸 떠올리기 어려웠다. 뭔가 정렬을 잘 이용하면 풀 수 있을 거 같아 보였음. backtracking(): 던전을 도는 순서를 재귀를 이용하여 만든다.explore(): 만든 순서대로 시뮬레이션시뮬레이션 결과와 answer을 비교하면서 최대값 갱신.코드#include #include using namespace std;int len = 0;int answer = -1;bool vi..
문제https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 및 코드vector에도 substring이 있을 거 같은데, 몰라서 그냥 for문을 돌면서 직접 넣어줬다.#include #include #include using namespace std;vector solution(vector array, vector> commands) { vector answer; for(int i=0; i tmp; for(int j=start; j
문제https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 및 코드갈색 테두리는 1줄이라고 문제에 나와 있으므로 노란색의 가로 세로에 2를 더해주면 전체 가로 세로 값이 나온다.가로*세로= 전체 타일의 갯수, 전체 타일의 갯수-노란색 타일의 갯수=갈색 타일의 갯수노란색 타일의 가로 세로를 완전탐색을 이용해 구하고, 갈색 타일의 갯수와 일치하는지 보면 된다.#include #include #include using namespace std;vector solution(int brown, int ..
문제https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 및 코드규칙대로 배열을 만들고 %를 이용하여 배열 범위를 벗어나지 않도록 했다.정답의 갯수가 score 벡터에 들어가게 되고, maxScore인 사람을 result 벡터에 입력한다.#include #include #include using namespace std;vector solution(vector answers) { vector score(3); // 12345 12345 // 21 23 24 25 // 3..
문제최소직사각형풀이 및 코드큰 것 중 최대값과 작은 것 중 최대 값을 찾으면 된다.문제에서 30x70을 70x30으로 회전해서 수납한다고 했는데, 결국큰값x작은 값의 형태로 만들어 주고큰 값 중 최대값(예제에서는 80), 작은 것 중 최대 값(예제에서는 50)을 구해주면 된다.#include #include #include using namespace std;int solution(vector> sizes) { int len = sizes.size(); int width = 0, height =0; for(int i =0; i