본문 바로가기

코딩테스트

[JAVA-D3] SWEA 6485 - 삼성시의 버스 노선

728x90
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

✅ 문제 요약

N개의 Ai~Bi 버스 노선이 주어지고 P개의 버스가 주어졌을 때 각 버스가 지나다니는 노선 수를 출력하라

 

🤔 문제 풀이

문제설명이 좀 어렵게 적혀있긴 하지만 간단히 말해서

"N개의 범위가 주어지고 P개의 수가 주어졌을 때 각 P가 속하는 범위 개수를 구하라"

정도로 이해하면 될 것 같다.

 

N개의 범위를 저장하기 위해 ArrayList<int[]> list 를 사용했다.

P개의 버스를 받을 때마다 Pi 버스를 list.get(i)[0] ~ list.get(i)[1] 사이에 속하는지 탐색하고

속한다면 count + 1 해주었다.

전체 범위 탐색이 끝나면 count를 answer을 담는 StringBuilder 에 저장하고 다음 버스 탐색을 시작했다.

 

🚨CODE

import java.util.*;
import java.io.*;
 
public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
        int testCase = Integer.parseInt(br.readLine());
 
        for (int t = 1; t <= testCase; t++) {
            int n = Integer.parseInt(br.readLine());
            ArrayList<int[]> list = new ArrayList<>();
            StringBuilder sb = new StringBuilder();
             
            for(int i = 0; i<n; i++) {
                StringTokenizer st = new StringTokenizer(br.readLine());
                int a = Integer.parseInt(st.nextToken());
                int b = Integer.parseInt(st.nextToken());
                list.add(new int[] {a,b});
            }
             
            sb.append(String.format("#%d ", t));
            int p = Integer.parseInt(br.readLine());
            for(int i = 0; i<p; i++) {
                int bus = Integer.parseInt(br.readLine());
                int count = 0;
                 
                for(int j = 0; j<list.size(); j++) {
                    if(list.get(j)[0] <= bus && bus <= list.get(j)[1])
                        count++;
                }
                sb.append(count).append(" ");
            }
             
            bw.write(String.format("%s\n", sb.toString()));
        }
         
        bw.flush();
    }
}
728x90
반응형