[TIL] JAVA - 10일차 (알고리즘 주)

배고픈메꾸리·2021년 2월 1일
0

SSAFY

목록 보기
8/22

좋은 코드, 효율적인 코드

  • 시간 복잡도
  • 공간 복잡도 ( 메모리를 얼마나 쓰느냐 )

입력을 어떻게 받느냐 : 60% 개선 가능!
출력 : 30%
알고리즘 : 1%
수학 : 9%

Scanner

내부적으로 try catch 하고 있지만 받을 때마다 하기 때문에 데이터가 많으면 시간이 오래 걸릴 가능성 있다.

  • nextInt()
  • nextDouble()
  • next()
    데이터 앞쪽 whiteSpace는 제거 (띄어쓰기 빈칸 탭 , 데이터 가져감 , witheSpace로 구분)
  • nextLine()
    데이터 가져감 , 엔터로 구분 , 엔터를 제거 , 쪼개서 사용, 각 타입에 맞게 변환

BufferedReader

버퍼를 사용, try catch를 하지만 한번에 받아서 처리하기 때문에 시간을 절약할 수 있다.
readLine() : 쪼개서 사용, 각 타입에 맞게 변환

String.split("");  //Regular Expression 사용함 (느림)
StringTokenizer st = new StringTokenizer(br.readLine(), "");  // 요놈이 빠르다

BufferdWriter

StringBuilder / StringBuffer(멀티스레드에 적합 : 알고리즘 부적합)

시간 측정하기

long startTime = System.currentTimeMillis();  // 입력을 받은 후에 사용하는것이 좋다.
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime +"ms");

과제 제출 요령

  • 백준 : Main.java
    Main백준_1289원재의메모리복구하기_D3.java

  • 정올 : Main.java
    Main정올_1289원재의메모리복구하기_D3.java

  • SWEA : Solution.java
    MainSWEA_1289원재의메모리복구하기_D3.java

profile
FE 개발자가 되자

0개의 댓글