[백준 / 1940 / C++] 주몽

Park·2023년 9월 29일
0

코딩테스트 - Week1

목록 보기
10/15

1. 문제 접근

  • 선택할 수 있는 경우 중 2개를 선택하는, 조합(combination)을 이용해서 문제를 풀어야 함

2. 시행착오

  • 없음!!

3. 코드 및 풀이

3.1 풀이

  • 2개를 고르는 조합은 for문을 통해 간단히 구현할 수 있음
  • 간혹 시간제한이 엄격한 문제가 존재하기 때문에, m이 200,000이 넘는 경우는 무조건 오답이기 때문에, 바로 오답처리 하는 것도 좋은 방법(n <= 100,000)
#include <bits/stdc++.h>
using namespace std;

int n, m;
int ret;
int arr[15004];

int main(){
    
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    
    // 1. Input n, m
    cin >> n >> m;
    
    // 2. For each n, input number and store it
    for(int i = 0; i < n; i++){
        cin >> arr[i];
    }
    // 3. print 0 when 0 is over 200,000
    if(m > 200000) cout << 0;
    else {
    // 4. Extract index with nC2
        for(int i = 0; i < n; i++){
            for(int j = i+1; j < n; j++){
                int tmp = arr[i] + arr[j];
                if (tmp == m) ret++;
            }
        }
        
        cout << ret;
    }

    return 0;
}

Reference

profile
안녕하세요!

0개의 댓글