본문 바로가기

백준

1037 약수

 

어떻게 풀지 바로 알았다! 근데 구현이 문제였다. 전에 set에 대해 잠시 살펴봤었는데 중복 허용 안 하고 자동으로 정렬된다는 점 때문에 이걸 쓰려고 했다. 하지만 이상하게 s.begin()  s.end()이 곱해지지 않았다. 찾아보니 이 자료형은 iterator이라고 뭐가 따로 있었다. set<int>::iterator iter; 변수 만드는 것도 이상하게 생겼다.. 

 

#include <iostream>
#include <set>
using namespace std;

int main() {
    int n, tmp;
    set<int> s;
    //set<int>::iterator iter;
    
    scanf("%d", &n);
    for(int i = 0; i < n; i++){
          scanf("%d", &tmp);
          s.insert(tmp);
    }
    int start = s.begin()  s.end();
    printf("%d",  start * end);
}

(돌아가지 않는 코드..)

 

cout << s[0];

혹시나해서 이렇게도 해봤는데 안 됐다. 

 

그래서 친숙한 배열을 사용했다. 

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int n, tmp, i;
    int arr[50];
    
    scanf("%d", &n);
    for(i = 0; i < n; i++){
          scanf("%d", &tmp);
          arr[i] = tmp;
    }
    sort(arr, arr+n);
    cout << arr[0] * arr[n-1];
}


벡터를 사용해서 짜보기

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main() {
    int n, i;
    
    scanf("%d", &n);
    vector<int> arr(n);
    
    for(i = 0; i < n; i++)
          scanf("%d", &arr[i]);
    
    sort(arr.begin(), arr.end());
    cout << arr[0] * arr[n-1];
}

 

배열을 최대 크기로 만든 다음 n까지만 확인하도록 만들었는데 

벡터로 하면 동적할당 필요없이 그냥 vector arr(n)로 크기 맞춰서 만들 수 있다. 

코드 고치는 김에 필요없는 tmp도 지웠다. 

 

sort(arr.begin(), arr.end())

 

정렬은 이렇게 하면 된다!

'백준' 카테고리의 다른 글

7567 그릇  (0) 2019.10.09
6539 만취한 상범  (0) 2019.10.09
1100 하얀칸  (0) 2019.10.08
1009 분산처리  (0) 2019.10.08
2902 KMP는 왜 KMP일까?  (0) 2019.10.08