본문 바로가기
백준

백준 단계 4. 배열

by 템닉___ 2024. 3. 17.

이 포스팅은 템닉의 개발저장소의 레거시 글입니다.

 

템닉의 개발저장소

기억 못할 수도 있는 지식들을 덤프해버리는 공간입니다.

tempnixk.tistory.com

 

1. 개수세기 (문제번호 10807)

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    short N, v, i;
    vector<int> vector(0,0);
    cin >> N;
    while(N!=0) {
        cin >> i;
        vector.push_back(i);
        N--;
    }
    
    cin >> v;
    
    cout <<  count(vector.begin(), vector.end(), v) << "\n";
    
    return 0;
}

STL 인 vector를 사용해보았다. vector에 대해서는 추후 공부가 더 필요하겠지만, 일단 vector(e, i) 처럼 선언해서 e개의 원소에 i를 대입하여 초기화할 수 있다. 그리고 push_back 함수를 통해 배열의 맨 뒤에 원소를 추가할 수 있다.

count는 vector와 같은 컨테이너에서 특정 원소의 개수를 구할 때 사용한다. 첫번째와 두번째 파라미터는 범위를 지정해주고 마지막 파라미터가 원하는 값을 잡아서 카운트해준다.

https://jhnyang.tistory.com/230 vector 관련한 구글링을 하던 중에 댓글에서 궁금한 점이 생겼다. 답변이 다시 달리길 기대하며...

 

2. X보다 작은 수(문제번호 10871)

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    short N, X, i, n ;
    vector<short> vec;

    cin >> N >> X;
    for(i=0;i<N;i++) {
        cin >> n;
        if(n<X)
            vec.push_back(n);
    }

    for(i=0; i<vec.size(); i++)
        cout <<  vec[i] << " ";
    
    return 0;
}

3. 최소, 최대 (문제번호 10818)

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    int N, num;
    vector<int> vec;

    cin >> N;
    for(int i=0;i<N;i++) {
        cin >> num;
        vec.push_back(num);
    }
    cout << *min_element(vec.begin(), vec.end()) << " " << *max_element(vec.begin(), vec.end()) << endl;
    return 0;
}

4. 최댓값 (문제번호 2562)

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    int num, max, count = 1;
    vector<int> vec;

    for(int i=0;i<9;i++) {
        cin >> num;
        vec.push_back(num);
    }
    
    max = *max_element(vec.begin(), vec.end());
    
    int  i = 0;
    while(vec[i]!=max) {
        i++;
        count++;
    }
    
    cout << max << endl;
    cout << count; 
    return 0;
}

5. 공 넣기 (문제번호 10810)

으응ㅁ..... 10810번 문제는 vector보다 array를 쓰는게 더 편해보이는데...

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    unsigned short N, M, i, j , k, f, g;
    unsigned short arr[N]={0, };
    
    cin >> N >> M;
    for(f=0;f<M;f++) {
        cin >> i >> j >> k;
        for(g=i; g<=j; g++) {
            arr[g-1]=k;
        }
    }
    for(f=0;f<N;f++) {
        cout << arr[f] << "";
    }
    
    return 0;
}

array 안에 N을 그냥 박아넣는게 원래 안되는 거였나...? 다른 사람들 풀이를 봐도 100을 때려 넣었길래 시도해봤더니 성공으로 떴다... 지금까지 시도를 가장 많이 했던 문제인듯 하다...

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    unsigned short N, M, i = 0, j = 0, k, f, g;
    unsigned short arr[100]={0, };
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> N >> M;
    for(f=0; f<M; f++) {
        cin >> i >> j >> k;
        for(g=i; g<=j; g++) {
            arr[g-1]=k;
        }
    }
    for(f=0; f<N; f++) {
        cout << arr[f] << " ";
    }
    
    return 0;
}

6. 공 교환 (문제번호 10813)

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    unsigned short N, M, i, j, temp, k;
    unsigned short arr[N];


    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> N >> M;
    for(k=0;k<N;k++) {
        arr[k]=k+1;
    }
    while(M-->0) {
        cin >> i >> j;
        temp = arr[i-1];
        arr[i-1] = arr[j-1];
        arr[j-1] = temp;
    }
    
    for(k=0; k<N; k++) {
        cout << arr[k] << " ";
    }
    
    return 0;
}

7. 과제 안 내신 분..? (문제번호 5597번)

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    int i=30, num;
    vector<int> vec = {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};

    for(i=0;i<28;i++) {
        cin >> num;
        vec.erase(remove(vec.begin(), vec.end(), num), vec.end());
    }
    for(i=0;i<2;i++) {
        cout<<vec[i]<<endl;
    }
    
    return 0;
}

8. 나머지 (문제번호 3052)

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    int num, i;
    vector<int> vec;
    for(i=0;i<10;i++) {
        cin >> num;
        num = num % 42 ;
        vec.push_back(num);
    }
    sort(vec.begin(), vec.end());
    vec.erase(unique(vec.begin(), vec.end()), vec.end());
    cout << vec.size();
    
    return 0;
}

9. 바구니 뒤집기 (문제번호 10811)

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    unsigned short N, M, i, j, k, l;
    vector<short> vec;
    cin >> N >> M;
    for (k=0; k<N; k++) 
        vec.push_back(k+1);  
    
    for(k=0;k<M;k++) {
        cin >> i >> j;
        reverse(vec.begin()+i-1, vec.begin()+j);
    }

    for(l=0; l<vec.size(); l++) {
        cout << vec[l] << " ";
    }
    
    return 0;
}

10. 평균 (문제번호 1546)

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main() {
    
    unsigned short N, score;
    cin >> N;

    vector<short> vec;
    int totalScore = 0;

    for (int i = 0; i < N; ++i) {
        cin >> score;
        vec.push_back(score);
        totalScore += score;
    }

    sort(vec.begin(), vec.end());

    int M = vec.back();

    double average = static_cast<double>(totalScore) / M * 100 / N;

    cout << average << endl;

    return 0;
}

 

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

[백준] 10699번 - 오늘 날짜  (0) 2024.03.18
백준 단계 5. 문자열  (0) 2024.03.17
백준 단계 3. 반복문  (0) 2024.03.17
백준 단계 2. 조건문  (0) 2024.03.17
백준 단계 1. 입출력과 사칙연산 추가된 문제들 풀이  (0) 2024.03.17