2023.10.05.THU

ronglong·2023년 10월 5일
0

[ 백준 ]

[ 1463번 1로 만들기 ]

: 왜 계속 런타임 에러 나나 했더니, 패키지 이름 잘못 들어가서 그런 것이었음,,
https://bada744.tistory.com/61

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //선언
        //String br.readLine()

        int n = Integer.parseInt(br.readLine());
        int[] dp = new int[n + 1];

        for (int i = 2; i <= n; i++) {
            dp[i] = dp[i - 1] + 1;
            if (i % 2 == 0) {
                dp[i] = Math.min(dp[i], dp[i / 2] + 1);
            }
            if (i % 3 == 0) {
                dp[i] = Math.min(dp[i], dp[i / 3] + 1);
            }
        }

        System.out.println(dp[n]);
    }
}

[ 2748번 피보나치 수 2 ]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //선언
        long[] arr = new long[91];
        int n = Integer.parseInt(br.readLine());
        arr[1] = 1L;

        for(int i=2; i<=n; i++){
            arr[i] = arr[i-1] + arr[i-2];
        }

        System.out.println(arr[n]);
    }
}

[ 클린 코드 ]

[ 부록A 동시성2 ]

  • 프로그램 소요시간 확인할 곳
    • i/o - 소켓 사용, DB 연결, 가상 메모리 스와핑 기다리기 등
      -> 동시성 높이기, 스레드 늘려보기
    • 프로세서 - 수치 계산, 정규 표현식 처리, 가비지 컬렉션 등
      -> 하드웨어 추가하여 성능 높인 후 테스트
  • 동시성은 복잡하므로 다중 스레드 프로그램에서는 SRP(단일책임원칙)가 특히 중요
  • synchronized 이용한 임계영역 설정
  • Executor 라이브러리를 이용한 스레드 풀 관리
  • 프로세서의 CAS(Compare And Swap) 연산 지원
    https://steady-coding.tistory.com/568
  • 낙관적 잠금(DB), 비관적 잠금(동기화)
    https://escapefromcoding.tistory.com/727
  • 다중 스레드 환경에서 안전하지 않은 클래스
    : SimpleDateFormat, DB 연결, java.util 컨테이너 클래스, 서블릿
  • java.util.concurrent 패키지의 집합 클래스는 스레드에 안전한 메서드 제공
  • 동기화 영역은 작을수록 좋다.

[ 느낀 점 ]

알고리즘 너무 어렵다,, 그래도 해야지,,

0개의 댓글