문제 링크
DP관련 문제인 줄 알았더니 알고보니 짐승공격 문제였다. ㅎㅎㅎ
항상 9개가 입력되고 7개의 답안이 출력된다는 점에 착안해서 9개 중에 골라낼 가짓수 2개를 모두 하나하나 대입하여 제외하고 나머지 7개의 합이 100이 되는지 판단하는 문제이다.
vector와 sort함수를 이용하였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
vector <int> h;
int sum=0;
for(int i=0;i<9;i++){
int ht;
cin>>ht;
sum+=ht;
h.push_back(ht);
}
for(int i=0;i<h.size();i++){
int j=i+1;
for(j;j<h.size();j++ ){
int mus=h[i]+h[j];
if(sum-mus==100){
h.erase(h.begin()+i);
h.erase(h.begin()+j-1);
}
}
}
sort(h.begin(),h.end());
for(int i=0;i<h.size();i++){
cout<<h[i]<<"\n";
}
return 0;
}
|
cs |
이번 문제에서 배운 점은 sort함수를 쓸 때 단순 배열의 경우 +N을 사용하여 정렬하지만 vector의 경우 begin(), end()함수를 사용하여 나타낸다는 점이다.
또한 erase함수를 사용하여 지우는데 지워진 것을 고려하여 iterator를 사용해야 한다는 점이다. +j-1 를 사용한 이유도 그 점에서 사용하였다.
'Algorithm > 문제 풀이 (Problem Solving)' 카테고리의 다른 글
[C++,DP] 백준 2294번 동전2 문제풀이 (0) | 2019.03.08 |
---|---|
[C++,DP] 백준 9465번 스티커 문제풀이 (0) | 2019.03.04 |
[C++] 백준 1181번 단어정렬 문제풀이 (0) | 2019.01.24 |
[C++] 코드그라운드 버스타기 문제풀이 (0) | 2019.01.10 |
[C++] 코드그라운드 숫자골라내기 문제풀이 (0) | 2018.09.19 |
댓글