-
[프로그래머스/Level 2] 단체사진 찍기 (C++)알고리즘 문제풀이/프로그래머스 2021. 1. 15. 16:46
programmers.co.kr/learn/courses/30/lessons/1835
새롭게 알게된 점
distance() 함수를 통해 iterator 사이의 크기를 반환할 수 있다.
#include <string> #include <vector> #include <algorithm> using namespace std; bool isPossible(int dis, char op, int target) { if(op == '=') return dis == target; else if(op == '>') return dis > target; else return dis < target; } int solution(int n, vector<string> data) { int answer = 0; string friends = "ACFJMNRT"; do { bool flag = true; for(int i = 0; i < data.size(); i++) { int left = friends.find(data[i][0]); int right = friends.find(data[i][2]); int dis = abs(left - right) - 1; if(isPossible(dis, data[i][3], data[i][4] - '0')) continue; flag = false; break; } if(flag) answer++; } while(next_permutation(friends.begin(), friends.end())); return answer; }
#include <string> #include <vector> #include <algorithm> using namespace std; string friends = "ACFJMNRT"; bool isPossible(int dis, char op, int pivot) { switch(op) { case '=': return dis == pivot; case '>': return dis > pivot; case '<': return dis < pivot; } } // 전역 변수를 정의할 경우 함수 내에 초기화 코드를 꼭 작성해주세요. int solution(int n, vector<string> data) { int answer = 0; sort(friends.begin(), friends.end()); do { bool flag = true; for(auto it : data) { int first = friends.find(it[0]); int second = friends.find(it[2]); if(!isPossible(abs(first - second) - 1, it[3], it[4] - '0')) { flag = false; break; } } if(flag) answer++; } while(next_permutation(friends.begin(), friends.end())); return answer; }
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level 3] N으로 표현 (C++) (0) 2021.01.29 [프로그래머스/Level 3] 정수 삼각형 (C++) (0) 2021.01.28 [프로그래머스/Level 2] 이진 변환 반복하기 (C++) (0) 2021.01.13 [프로그래머스/Level 2] 예상 대진표 (C++) (0) 2021.01.03 [프로그래머스/Level 2] 삼각 달팽이 (C++) (0) 2020.12.29