문제 설명 |
본 문제는 프로그래머스의 단체사진 찍기 문제입니다.
해결 과정 |
data배열의 문자열에 인덱스로 접근하면 조건과 대상에 대해서 다룰 수 있습니다. 파싱한 듯한 결과가 됩니다.
next_permutation 함수를 통해 모든 순열에 접근하여 해당 조건에 하나라도 부적합할 시 그 횟수를 저장해
일어날 수 있는 총 순열의 갯수 40320 - 부적합 수 를 반환합니다.
코드 전문 |
#include <string>
#include <vector>
#include <algorithm>
#include <cstdlib>
using namespace std;
// 전역 변수를 정의할 경우 함수 내에 초기화 코드를 꼭 작성해주세요.
int solution(int n, vector<string> data) {
string ka_friends = "ACFJMNRT";
int false_cnt = 0;
do
{
for (auto c : data)
{
int friend1_idx = ka_friends.find(c[0]);
int friend2_idx = ka_friends.find(c[2]);
int gap_two_friends = abs(friend1_idx - friend2_idx)-1;
if (c[3] == '<')
{
if (gap_two_friends >= (c[4] - '0')) { false_cnt++; break; }
}
else if (c[3] == '=')
{
if (gap_two_friends != (c[4] - '0')) { false_cnt++; break; }
}
else if (c[3] == '>')
{
if (gap_two_friends <= (c[4] - '0')) { false_cnt++; break; }
}
}
} while (next_permutation(ka_friends.begin(), ka_friends.end()));
return 40320 - false_cnt;
}
느낀 점 (잡설 99% , 배운점 1%(많은 편)) |
더보기
vector에는 따로 find 함수가 없습니다. string이나 map에는 존재하는데 아쉽다. algorithm 라이브러리에도
find가 있긴 한데 적용해보니 에러만 왕창 나고 포기했다. abs는 cstdlib에 있는 함수이다.
긴 글 읽어주셔서 감사합니다.
부족한 점이 있다면 부디 알려주시면 감사하겠습니다.
'알고리즘 부셔버렷 > ProblemSolving' 카테고리의 다른 글
[프로그래머스] 124 나라의 숫자 (문제 설명, 해결 과정, 코드 전문, c++) (0) | 2022.06.02 |
---|---|
[프로그래머스] 멀쩡한 사각형 (문제 설명, 해결 과정, 코드 전문, c++) (0) | 2022.06.02 |
[프로그래머스] 카카오프렌즈 컬러링북 (해결과정, BFS, DFS 복기, C++) (0) | 2022.05.31 |
[프로그래머스] 오픈채팅방 (문제 설명, 해결 과정, 코드 전문, c++) (0) | 2022.05.30 |
[프로그래머스] 문자열 압축 (문제 설명, 해결 과정, 코드 전문, C++) (0) | 2022.05.30 |
댓글