반응형
728x170
처음엔 어려웠다.
왜냐면.. 나는 이전 것의 결과만 생각했다.
즉, [3] 을 구하기 위해서는 [1] 과 [2]의 사칙연산만 하면 되는 줄 알았으나..
교환법칙이 성립하지 않는 '/' 나눗셈과 '-' 때문에... [2]와 [1]도 계산해야했다.
나는 그것을 몰라서.. 다 틀렸다.
https://programmers.co.kr/learn/courses/30/lessons/42895
#맞는 풀이
#include <bits/stdc++.h>
using namespace std;
int solution(int N, int number) {
int answer = -1;
vector<vector<int>> vec(10);
vec[1].push_back(N); // 문자 한개 쓰인 것 추가.
if(number == N) return 1;
int seq = 2;
while(1){
if(seq == 9)break;
for(int i = 1; i<seq; i++){
// ex) seq = 4이면 (1,3) (2,2) (3,1) 의 연산이 담김.
for(auto& x : vec[i]){
for(auto & y : vec[seq-i]){
vec[seq].push_back(x+y);
vec[seq].push_back(x-y);
vec[seq].push_back(x*y);
if(y == 0)continue;
vec[seq].push_back(x/y); //0이 아닐때만.
}
}
//숫자 이어붙인것 마지막으로 추가
string s = to_string(vec[seq-1].back());
s += to_string(N);
vec[seq].push_back(stoi(s));
//target 값이 있는지
auto it = find(vec[seq].begin(), vec[seq].end(), number);
if(it != vec[seq].end())return seq;
}
//벡터 중복제거
vec[seq].erase(unique(vec[seq].begin(),vec[seq].end()),vec[seq].end());
seq++;
}
return answer;
}
다른 사람은 다르게 풀던데.. 난 이렇게 풀었다.
728x90
반응형
그리드형
'문제풀이(Problem Solving)' 카테고리의 다른 글
백준, BOJ, 7662번, 이중 우선순위 큐 C++ [CPP] ★★ (0) | 2022.03.27 |
---|---|
백준, BOJ, 4358번, 생태학 C++ [CPP] ★★ (0) | 2022.03.26 |
백준, BOJ, 1525번, 퍼즐 C++ [CPP] ★★★★★ (0) | 2022.03.06 |
백준, BOJ, 21921번, 블로그 C++ [CPP] ★★ (0) | 2022.03.05 |
LeetCode, 1920. Build Array from Permutation C++ [CPP] (0) | 2022.02.27 |