-
자동차 테스트코딩테스트/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