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 |
댓글