Algorithm(38)
-
[프로그래머스] 카펫 | C++
카펫 접근 방식 전체 카펫의 크기는 brown과 yellow를 더한 것과 같다. int total = brown + yellow;이제 우리가 구하고자 하는 전체 카펫 크기의 가로를 W, 세로를 H로 정의해보자. 이 때 brown은 전체 카펫의 크기 W × H에서 yellow의 갯수를 뺀 것과 같고, yellow는 (W - 2) × (H - 2)와 같다. 이를 정리하면, brown = 2H + 2W - 4 yellow = WH - 2H - 2W + 4이다. 이를 충족하는 W와 H를 for문으로 탐색해서 찾아보았다. 전체 소스코드 #include using namespace std; vector solution(int brown, int yellow) { vector answer; int total = br..
2023.04.14 -
[백준] 토마토 | 7569 | C++
토마토 | 7569 | C++ BFS로 풀었다. 순서도 graph TD; 준비{{준비. \n 방향벡터 준비, \n 위치 구조체 정의}}; input([1. 입력 및 초기화]) --> input2[2. 최초로 익은 토마토 위치들을 \n 큐에 넣음] --> Q1{3. BFS 탐색, \n 큐가 비었는가?}; Q1 -- 그렇다 --> Q2{4. 익지 않은 \n 토마토가 있는가?}; Q2 -- 그렇다 --> A1([-1 출력]); Q2 -- 아니다 --> A2([최댓값 탐색 후 출력]); Q1 -- 아니라면 \n 6방향 탐색 --> 경계{5. 다음 위치가 \n 상자 내부인가?}; 경계 -- 그렇다 --> 미방문{6. 다음 위치가 \n 익지 않은 토마토 위치인가?}; 미방문 -- 그렇다 --> 기간저장[7. 다음 ..
2023.03.07 -
[프로그래머스] 최솟값 만들기 | C++
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 두 배열의 성분끼리 곱한 값들을 더하여 만든 총합 중 최솟값을 구하는 문제이다. 나의 풀이 전략 A 행렬은 오름차순 정렬, B 행렬은 내림차순 정렬한다. 상세 1. 위 풀이 전략을 그대로 실행한다. 더보기 sort(A.begin(), A.end()); // 오름차순 정렬 sort(B.rbegin(), B.rend()); // 내림차순 정렬 2. 정답을 구한다. 더보기 for(int i = 0; i < A.size(); ++i) { answer += A[i]*B[i]; } 전체 소스코드 #include #..
2023.02.18 -
[프로그래머스] 연속 부분 수열 합의 개수 | C++
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 원형으로 나열된 수열의 부분합 수를 구하는 문제이다. 나의 풀이 전략 set 자료형을 사용하여 부분합의 중복을 막는다. 상세 1) elements에서 합연산을 출발할 지점을 for 문으로 구축한다. 더보기 for (int start = 0; start < elements.size(); ++start) // 현재단계 { } 2) 부분합의 길이를 1에서부터 elements의 길이까지를 for 문으로 구축한다. 더보기 for (int start = 0; start < elements.size(); ++star..
2023.01.14 -
[프로그래머스] 가장 큰 수 | C++
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 숫자들을 문자열로 조합한 후 가장 큰 값을 반환하는 문제이다. 풀이 전략 사용자 정의로 비교함수를 정의한다. 상세 1) numbers의 숫자들을 문자로 변환 후, vector store에 저장해둔다. 더보기 string solution(vector numbers) { string answer = ""; vector store; for(int number : numbers) store.push_back(to_string(number)); } 2) store에 저장된 문자열들을 정렬할 것이다. 정렬기준은 직..
2023.01.12 -
[프로그래머스] 모음사전 | C++
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주어진 단어가 사전 순으로 몇 번째인지 구하는 문제였다. 나의 풀이 전략 DFS로 푼다. 상세 1. DFS 함수의 이름은 makeCombination()이다. 우리가 조합한 단어는 comb, 문제에서 주어진 단어는 dest, 재귀깊이는 depth로 설정한다. 더보기 void makeCombination(string comb, string dest, int depth) // DFS { } 2. 우리가 이용할 모음은 정해져있다. 상수 문자 배열로 고정해주자. 더보기 // 전역 const char vowSet..
2023.01.12