ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자동차 테스트
    코딩테스트/softeer 2023. 9. 10. 13:25

    https://softeer.ai/practice/info.do?idx=1&eid=1717 

     

    Softeer

    연습문제를 담을 Set을 선택해주세요. 취소 확인

    softeer.ai

     

    최초답

    import java.util.*;
    import java.io.*;
    
    
    public class Main
    {
        public static ArrayList<Integer> carList = new ArrayList<Integer>();
        
        public static final int notFound = -1;
    
        public static void main(String args[]) throws IOException
        {
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            StringTokenizer st = new StringTokenizer(in.readLine());
            int carCnt = Integer.parseInt(st.nextToken());
            int qCnt = Integer.parseInt(st.nextToken());
            
            st = new StringTokenizer(in.readLine());
            for (int i = 0; i < carCnt; i++){
                carList.add(Integer.parseInt(st.nextToken()));
            }
            Collections.sort(carList);
    
            for (int i = 0; i < qCnt; i++){
                int value = Integer.parseInt(in.readLine());
                System.out.println(getKindsOfTest(value));
            }
        }
    
        public static int getKindsOfTest(int value){
            int index = getIndex(value);
            if (index == notFound){
                return 0;
            }
            int overCnt = carList.size() - index - 1;
            int lowerCnt = carList.size() - 1 - overCnt;
            if (overCnt < 0 || lowerCnt < 0){
                return 0;
            }
            return overCnt * lowerCnt;
        }
    
        public static int getIndex(int value){
            for (int i =0; i < carList.size(); i++){
                if (carList.get(i) == value){
                    return i;
                }
            }
            return notFound;
        }
    }

    수정답

    import java.util.*;
    import java.io.*;
    
    
    public class Main
    {
        public static int[] carList;
        
        public static final int notFound = -1;
    
        public static int carCnt;
    
        public static void main(String args[]) throws IOException
        {
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            StringTokenizer st = new StringTokenizer(in.readLine());
            carCnt = Integer.parseInt(st.nextToken());
            carList = new int[carCnt];
            int qCnt = Integer.parseInt(st.nextToken());
            
            st = new StringTokenizer(in.readLine());
            for (int i = 0; i < carCnt; i++){
                carList[i] = Integer.parseInt(st.nextToken());
            }
            Arrays.sort(carList);
    
            for (int i = 0; i < qCnt; i++){
                int value = Integer.parseInt(in.readLine());
                System.out.println(getKindsOfTest(value));
            }
        }
    
        public static int getKindsOfTest(int value){
            int index = getIndex(value);
            if (index < 0){
                return 0;
            }
            int overCnt = carCnt - index - 1;
            int lowerCnt = carCnt - 1 - overCnt;
            if (overCnt < 0 || lowerCnt < 0){
                return 0;
            }
            return overCnt * lowerCnt;
        }
    
        public static int getIndex(int value){
            return Arrays.binarySearch(carList, value);
        }
    }

    배운점

    값을 검색하여 인댁스를 가져오는 행위에 대하여 ArrayList 를 사용하기보단 array를 사용하는게 선응적으로 이점이있다.

     

    코테에서는 가급적 인덱스를 사용하여 값을구하는 행위가 있을 경우 ArrayList는 피해야겠다.

     

    익숙해져서 쓰고있었는데.. 아쉽... 시간초과 방지를 하자..

     

    '코딩테스트 > softeer' 카테고리의 다른 글

    강의실 배정  (0) 2023.09.10
    순서대로 방문하기  (0) 2023.09.10
    회의실 예약(java)  (0) 2023.09.04
    바이러스(java)  (0) 2023.09.04
    GBC(java)  (0) 2023.09.04
Designed by Tistory.