본문 바로가기
Study (etc)/Problem Solving

[BOJ / C++] 11116번 : 교통량

by Haren 2023. 1. 14.

문제

승민이는 마포대교의 교통량이 얼마인지를 측정하고있다. 승민이는 도로 맞은 편을 잇는 두개의 끈을 일정 간격 사이로 매달아 놓았다. 그리고 자동차가 끈위로 지나갈때 끈 끝에 있는 작은 박스에는 그 때 의 시간이 기록된다. 

예를 들어, 자동차가 왼쪽에서 올 때 네 번의 기록을 얻게 된다.

  • 왼쪽 줄 위로 앞 바퀴가 지나 간 시간 t
  • 왼쪽 줄 위로 뒷 바퀴가 지나 간 시간 t + 500
  • 오른쪽 줄 위로 앞 바퀴가 지나 간 시간 t + 1000
  • 오른쪽 줄 위로 뒷 바퀴가 지나 간 시간 t + 1500

자동차가 오른쪽에서 올 때도 같은 규칙으로 오른쪽과 왼쪽을 바꾸어 측정하면 된다. 주어진 두개의 시간 기록으로 왼쪽에서 얼마나 많은 차가 왔는지 알아내면 된다. 한 끈 위에는 많아야 한 대의 차량이 지나가고 있다.

입력

첫 번째 줄에 n (1 ≤ n ≤ 100) 까지의 테스트 케이스의 개수를 입력 한다.  각각의 테스트 케이스에는 박스에서 측정 된 시간 기록의 개수 m (m ≤ 200)을 입력한다. 다음 줄에는 왼쪽 박스에서 측정된 109 보다 작은 시간 기록 m개를 입력한다. 그 다음 줄에는 오른쪽 박스에서 측정된 109 보다 작은 시간 기록 m개를 입력한다.

출력

각각의 테스트케이스에 대해 왼쪽에서 오는 차의 숫자를 출력한다.

Solved.ac 레벨

실버 V

풀이

#include <bits/stdc++.h>

using namespace std;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int t;
    cin >> t;

    while(t--){
        int m, cnt = 0;
        vector<int> left;
        vector<int> right;
        
        cin >> m;

        for(int i = 0; i < m; i++){
            int input;
            cin >> input;
            left.push_back(input);
        }

        for(int i = 0; i < m; i++){
            int input;
            cin >> input;
            right.push_back(input);
        }

        for(int i = 1; i < m; i++){
            for(int j = 0; j < m - 1; j++){
                if(left[i] - left[j] == 500){
                    for(int k = 0; k < m; k++){
                        if(left[i] + 500 == right[k]){
                            cnt++;
                            break;
                        }
                    }
                }
            }
        }

        cout << cnt << "\n";

    }
    
    return 0;
}

왼쪽 선을 앞바퀴가 밟고 뒷바퀴가 밟았을 때의 차가 500이고, 왼쪽 선을 뒷바퀴가 밟은 시점에 500을 더했을 때 값이 존재한다면 왼쪽에서 온 차라고 판별할 수 있다.

 

따라서 왼쪽 선을 밟은 시간값과 오른쪽 선을 밟은 시간값을 각각 별도로 받아 반복문에서 대입해보며 판별하면 된다.

 

 

11116번: 교통량

첫 번째 줄에 n (1 ≤ n ≤ 100) 까지의 테스트 케이스의 개수를 입력 한다.  각각의 테스트 케이스에는 박스에서 측정 된 시간 기록의 개수 m (m ≤ 200)을 입력한다. 다음 줄에는 왼쪽 박스에서

www.acmicpc.net

 

'Study (etc) > Problem Solving' 카테고리의 다른 글

[BOJ / C++] 5596번 : 시험 점수  (0) 2023.01.14
[BOJ / C++] 4470번 : 줄번호  (0) 2023.01.14
[BOJ / C++] 5555번 : 반지  (2) 2023.01.06
[BOJ / C++] 1969번 : DNA  (2) 2023.01.05
[BOJ / C++] 10156번 : 과자  (1) 2023.01.05