2023. 4. 24. 18:25, 알고리즘/BOJ
#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> a;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
//m의 개수만큼 0을 넣어줌
for (int i = 0; i < n; ++i) a.push_back(i < m ? 0 : 1);
do {
for (int i = 0; i < n; i++)
if (a[i] == 0) cout << i + 1 << ' ';
cout << '\n';
} while (next_permutation(a.begin(), a.end()));
}
위와 같은 코드에서,
for(int i=0; i<n; i++) a.push_back(i<m ? 0:1);이 삼항연산자 라는건 알겠는데, 항상 사용하려고 하면 생각이 안나서 검색을 해보았다.
이와같이 처음 m개에 0을 푸시하고, n-m까지 나머지에 1을 푸시하는 코드를 작성할때,
(i<m ? 0:1); 을 사용하면 간결하게 표현 할 수 있다.
만약 삼항연산자를 활용하지 않으면, 내가 처음에 작성한 형태로 작성하면 된다.
for (int i = 0; i < m; i++)
v.push_back(0);
for (int i = 0; i < n-m; i++)
v.push_back(1);
이렇게 작성할 수 있다. 물론 이렇게 작성하는것도 직관적이고 이해가 잘되긴 하는데,
조금 더 삼항연산자에 익숙해진뒤에 삼항연산자를 활용해서 조금 더 간결하게 작성해보도록 하자.
'알고리즘 > BOJ' 카테고리의 다른 글
c++ fill()에 대해서 궁금한 부분 조사. (0) | 2023.04.26 |
---|---|
비내림차순과 오름차순에 관하여. 결론적으로 둘은 다르다. (0) | 2023.04.24 |
c++ next_permutation을 활용해서 조합을 뽑는 방법. (0) | 2023.04.24 |
c++ N-Queen 문제에서 영어로 row와 column이 헷갈려서 기억하려고 작성. (0) | 2023.04.24 |
c++ 전역변수로 선언된 char board[n][n];에 대하여. (0) | 2023.04.22 |
Comments, Trackbacks