본문 바로가기
Blog/TIL

[240608] 환경설정 끄적끄적

by 코젼 2024. 6. 8.
728x90
반응형

🔶코딩테스트

🔶JPA


목차

    / 오늘의 TIL /


    코딩테스트

    https://school.programmers.co.kr/learn/courses/30/lessons/42583

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

    성공

    import java.util.ArrayDeque;
    
    class Solution {
        /**
         * @param bridge_length 다리에 올라갈 수 있는 최대 트럭 수, 다리 길이
         * @param weight 다리 최대 하중
         * @param truck_weights 트럭 무게
         * @return 모든 트럭이 다리를 건너기 위한 최소 소요 시간(초)
         */
        public static int solution(int bridge_length, int weight, int[] truck_weights) {
    
            ArrayDeque<Integer> queue = new ArrayDeque<>();
    
            //트럭 총 하중, 소요 시간(초)
            int sum = 0, sec = 0;
    
            for (int truck : truck_weights) {
    
                while (true) {
                    //큐에 아무것도 없는 경우
                    if (queue.isEmpty()) {
                        queue.add(truck);
                        sum += truck;
                        sec++;
                        break;
                    } else if (queue.size() == bridge_length) { //최대 개수만큼 트럭이 다 찬 경우
                        sum -= queue.poll();
                    } else { //큐에 트럭이 있고, 최대 개수가 아닌 경우
                        //최대 하중이 안 넘으면 추가
                        if ((sum + truck) <= weight) {
                            queue.add(truck);
                            sum += truck;
                            sec++;
                            break;
                        } else { //최대 하중이 넘으면 0을 넣고 트럭이 다리를 건너게 한다.
                            queue.add(0);
                            sec++;
                        }
                    }
                }
            }
            //마지막 트럭도 다리를 건너야 하므로 다리 길이만큼 추가 시간 소요됨
            return sec + bridge_length;
        }
    }

    실패

    더보기
    import java.util.ArrayDeque;
    
    class Solution {
        /**
         * @param bridge_length 다리에 올라갈 수 있는 최대 트럭 수, 다리 길이
         * @param weight 다리 최대 하중
         * @param truck_weights 트럭 무게
         * @return 모든 트럭이 다리를 건너기 위한 최소 소요 시간(초)
         */
        public static int solution(int bridge_length, int weight, int[] truck_weights) {
    
            ArrayDeque<Integer> queue = new ArrayDeque<>();
    
            //트럭 총 하중, 총 개수, 초 시간
            int sum = 0, num = 0, sec = 0;
            for (int truck : truck_weights) {
                //최대 하중, 최대 개수보다 적은 경우
                if (num < bridge_length && (sum + truck) <= weight) {
                    queue.push(truck);
                    sum += truck;
                    num++; sec++;
                } else { //하중 초과 or 개수 초과 or 둘다 충족하는 경우
                    if (!queue.isEmpty()) {
                        int poll = queue.pollLast();
                        sum -= poll;
                        num--; sec++;
                    }
                    queue.push(truck);
                    sum += truck;
                    num++; sec++;
                }
            }
            sec += bridge_length;
    
            return sec;
        }
    }

    회고

    총 개수를 queue의 사이즈를 통해 비교하고, 큐에 0을 넣음으로써 최대 하중이 넘는 트럭은 진입하지 못하도록 처리한다.


    JPA

    컬럼 default 값 설정하기

    @ColumnDefault("0")

     


    주의사항

    • jpa의 ddl은 column 순서를 보장하지 않으므로 운영 환경에서 직접 ddl을 작성하는 것을 권장한다.
    • @DataJpaTest를 사용하면 기본적으로 기본 H2 설정을 따른다.
      • 내가 설정한 H2로 설정하고 싶다면 추가적으로 @AutoConfigureTestDatabase를 설정해주어야 한다.
      • DataSource 변경
    @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)

    환경설정

    db

    새로운 db를 생성하고 싶은 경우

    더보기

    1차 시도 필요: jdbc:h2:~/study/db/commute/commute

    이후 접속: jdbc:h2:tcp://localhost/~/study/db/commute/commute

    application.yml에 작성되어있는 url 주소로 접근할 수 있다.

    jdbc:h2:mem:commute;MODE=MYSQL;

    application.yml (h2 사용. profile = local)

    spring:
      config:
        activate:
          on-profile: local
      datasource:
    	url: "jdbc:h2:mem:commute;MODE=MYSQL;"
        username: "sa"
        password: ""
        driver-class-name: org.h2.Driver
      jpa:
        hibernate:
          ddl-auto: create
        properties:
          hibernate:
            format_sql: true
            show_sql: true
            dialect: org.hibernate.dialect.H2Dialect
        open-in-view: false
      h2:
        console:
          enabled: true
          path: /h2-console
    728x90
    반응형

    'Blog > TIL' 카테고리의 다른 글

    [240610] 유스케이스 다이어그램을 작성해보다  (0) 2024.06.10
    [240609] 배울 게 태산  (0) 2024.06.09
    [240607] queue 복습2  (0) 2024.06.07
    [240606] queue 복습1  (0) 2024.06.07
    [240605] 문제를 잘 파악하자  (0) 2024.06.05

    댓글