본문 바로가기
알고리즘/백준

11650번 문제 : 좌표 정렬하기

by son_i 2023. 3. 6.
728x90

11650번: 좌표 정렬하기 (acmicpc.net)

 

11650번: 좌표 정렬하기

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

방금 익혔던 Arrays.sort랑 Comparator사용하면 될 듯 !!!

 

추가로 알아야할 것

다량의 데이터를 받을 때는 split아니면 StringTokenizer 사용해야한다.

- split은 입력 받는 동시에 별다른 처리 없이 배열로 데이터를 받아올 수 있다.

- StringTokenizer의 경우 토큰화 된 문자열을 다시 처리

  StringTokenizer의 생성자에서 추가적인 구분자를 명시하지 않을 경우 default 값은 띄어쓰기로 데이터가 구분되기 때문에 필요 시 다른 구분자를 사용할 경우 StringTokenizer st = new StringTokenizer(문자열, 구분자);

- 배열을 생성하며 크기를 정해줄 땐 countTokens() 메소드를 이용해 총 토큰의 수를 리턴

- 그 다음 hasMoreTokens() 메소드가 토큰이 더이상 없을 때 false를 리턴 한다는 것을 이용해 while문을 돌리며 데이터를 저장한다.

- StringTokenizer의 nextToken() 메소드는 단순히 공백자리를 땡겨 채워준다.

성능면에선 split은 정규식을 기반으로 문자열을 자르는 로직으로 동작하기 때문에

단순히 공백 자리를 당겨서 채우는 StringTokenizer가 더 빠르다.

 

후 정말 어렵구만 !!

BufferedReader 의 기능들 다시 정리해서 notion에 업로드 하기

StringBuilder 사용법도 같이