본문 바로가기
  • Adillete
【스터디노트】/▷TIL

99클럽 코테 스터디 13일차 TIL + 오늘의 학습 키워드 정렬

by 아딜렛 2025. 4. 16.

- 오늘의 학습 키워드 정렬
- 공부한 내용 본인의 언어로 정리하기

 

중복 제거를 위해서 Set 자료구조를 사용한다.

정렬 조건에 맞게 정렬을 한다.

 

수도코드

단어수를 N 을 입력받는다.
집합(Set)을 생성하여 중복없이 단어를 저장한다.
집합을 리스트로 변환한다.
리스트를 정렬한다: 
  길이가 짧은 순
  길이가 같으면 사전순
정렬된 리스트 단어들을 출력한다.


- 오늘의 회고
  - 어떤 문제가 있었고, 나는 어떤 시도를 했는지

단어가 이미 줄별로 구분되었음에도 StringTokenizer를 사용했음 
  - 어떻게 해결했는지

필요하지 않은 것을 그냥 풀던 습관대로 풀었음 -> gpt가 필요하지 않다고 함


  - 무엇을 새롭게 알았는지

BufferedWrier 사용하는 이유:
system.out.println 은 호출될때마다 출력장치에 데이터를 사용하여 많은 양의 데이터 출력시 오버헤드 발생한다. 출력 성능을 향상시키기 위해서 데이터를 버퍼에 모았다가 한번에 출력하는 Bufferedwriter 가 I/O 효율성을 향상시킨다.

 

BufferedWriter 와 StringTokenizer

StringTokenizer 입력 문자열을 토큰으로 분리하는데 사용

BufferedWriter는 출력을 버퍼링하는데 사용한다.

 

Collections.sort()

자바의 컬렉션 프레임워크에서 제공하는 정렬 메소드이며 리스트를 정리할때 사용한다.

Comparator를 인자로 전달하면 해당 인자의 기준에 따라서 정렬이 된다.

 

compareTo() 메서드

: 두 문자열을 사전식으로 비교한다== 앞에서부터 한문자씩 비교한다

비교 결과를 정수로 반환하여 값이 음수면 첫번째 문자열이 사전순으로 앞에 위치한다.

 

s1.length() - s2.length()의 결과가 어떻게 길이순 정렬로 이어지는지

Java Comparator에서 compare(o1, o2) 

음수를 반환하면 o1이 o2보다 앞에 위치

양수를 반환하면 o1이 o2 보다 뒤에 위치

0을 반환하면 o1이랑 o2의 순서가 동일

s1.length() - s2.length()을 하면 짧은 단어를 먼저 배치하고 긴단어를 나중에 배치하는 오름차순 정렬을 수행한다.

  - 내일 학습할 것은 무엇인지