코딩테스트
[프로그래머스][C++] 예상 대진표
이쿠우우
2022. 3. 25. 17:08
반응형
https://programmers.co.kr/learn/courses/30/lessons/12985
글쓴이의 답
개인적인 풀이 임으로
이것보다 더 좋은 알고리즘은 많음...
이렇게도 풀이하는구나.. 공유하기 위해 올림...
#include <iostream>
#include <vector>
#include <utility>
using namespace std;
int findResult(vector<pair<int, int>> map, int &a, int &b, int &answer, bool &result){
answer++;
if(true == result){
return 0;
}
vector<pair<int, int>> nextMap;
int num1;
int num2;
for(int i=0; i < map.size(); i++){
if(((a == map[i].first) && (b == map[i].second)) || ((b == map[i].first) && (a == map[i].second))) {
result = true;
return 0;
}
int find = 0;
if((a == map[i].first) || (a == map[i].second)){
find = a;
}
else if((b == map[i].first) || (b == map[i].second)){
find = b;
}
else{
find = map[i].first;
}
if(0 == i%2){
num1 = find;
}
else{
num2 = find;
pair<int, int> temp = make_pair(num1, num2);
nextMap.push_back(temp);
}
}
findResult(nextMap, a, b, answer, result);
return 0;
}
int solution(int n, int a, int b)
{
int answer = 0;
vector<pair<int, int>> map;
for(int i=1; i <= n; i+=2){
pair<int ,int> temp = make_pair(i, i+1);
map.push_back(temp);
}
bool result = false;
findResult(map, a, b, answer, result);
return answer;
}
꾸준히 하다보면 실력이 늘겠지..
반응형