[코테6_5]중복확인

byeol·2022년 12월 27일
0

코딩테스트

목록 보기
41/42

정렬 라이브러리 Array.sort() / Collections.sort()

자바에는 오름차순 정렬 라이브러리를 두 개를 제공한다
Array.sort() 그리고 Collections.sort()이다.
Arrays는 배열을 대상으로, Collections는 리스트를 대상으로 정렬을 한다.

여기서 주의해야 할 점이 Arrays.sort()의 평균 시간 복잡도가 O(nlog(n)) 지만, 최악의 경우는 O(n^2)이다. 따라서 n의 범위가 매우 많은 경우 사용이 불가능하다.

대신 Collections.sort()는 평균 시간 복잡도가 O(n)이고 최악의 경우는 O(nlog(n))이기 때문에 최소 nlog(n)을 보장해주기에 Collections.sort() 사용을 권장한다.

내림차순 정렬을 할 때는
Arrays.sort(nums, Collections.reverseOrder());
Collections.sort(list, Collections.reverseOrder());
[출처][Java] 정렬 라이브러리 Array.sort() / Collections.sort()|작성자 전산쟁이

ArrayList 메소드 기능 : add(), get(), remove(), clear()

✔ 내답-> runtime error

런타임 오류 : 코드를 실행하는 중에 발생하는 오류

숫자를 0으로 나누거나, 정의하지 않은 변수 이름을 사용하거나 모듈을 찾지 못하거나 인덱싱이 잘못된 경우 등 다양한 종류의 런타임 오류가 있다.

  • NameError : 정의하지 않은 변수를 사용
  • ZeroDivisionError : 숫자를 0으로 나누었을 때
  • IndexError : 주로 리스트나 튜플에서 존재하지 않은 인덱스 위치로 인덱싱을 했을 때 발생하는 오류
  • KeyError : 주로 딕셔너리에서 존재하지 않은 key값으로 값을 가져오려 할 경우 발생
  • AttributeError : 클래스와 라이브러리에서 존재하지 않는 속성이나 함수를 사용할 때
  • TypeError : 잘못된 타입이나 연산을 사용한 경우에 발생 특히 숫자 변수와 문자 변수를 연산하면 가장 많이 발생

이 중 내가 일으킨 오류는 IndexError 하하...
아주 정답에 근접하지만

 for(int i=0;i<n;i++){
      if(arr[i]==arr[i+1])

위 부분이다. i가 n-1인 경우 i+1이 n이 되어버려서
index의 값을 넘어버린다...

import java.util.*;

class Main{
 public static String solution( int n, int[] arr){
    Arrays.sort(arr);
    for(int i=0;i<n;i++){
      if(arr[i]==arr[i+1])
      return "D";
   }
   return "U"; 
  
 }


 public static void main(String[] args){
   Scanner kb = new Scanner(System.in);
   int n = kb.nextInt();
   int[] arr = new int[n];
   for(int i=0;i<n;i++) arr[i]=kb.nextInt();
   System.out.print(solution(n,arr));  
 }
}


위와 같이 고쳐주면 정답이다

✔️ 강의와 내 답이 같다.

profile
꾸준하게 Ready, Set, Go!

0개의 댓글