본문 바로가기

🧑🏻‍💻 Dev

(60)
@DataJpaTest Rollback 후 Id 초기화 안됨 1. 문제 Hibernate를 사용해서 간단하게 Customer 객체를 디비에 저장하는 save()와 모든 유저를 조회하는 findAll() 그리고, 단일 조회할 수 있는 findById()를 만들어서 테스트 중에 있었다. @Import(CustomerRepository.class) @DataJpaTest class CustomerRepositoryTest { @Autowired private CustomerRepository customerRepository; @Test public void findById_test() { // Given Customer customer = Customer.builder() .name("코스") .tel("0101111") .build(); customerReposit..
[백준] 1918번 후위 표기식 (Java) 1918 후위 표기식 1. 문제 분석 연산자의 우선순위를 생각해야 하는 문제입니다. 주의해야 할 점은 A + B + C의 경우에는 앞에 있는 +가 우선순위가 더 높기 때문에 ABC++가 아닌 (A + B) + C로 묶어서 AB+C+가 나와야 합니다. 그리고 추가로 괄호로 묶여서 제공되는 연산자의 경우에는 가장 우선순위가 높기 때문에 가장 먼저 처리해줘야 합니다. 알파벳에 해당하는 (A ~ Z)는 바로 문자열에 추가하고, 연산자(+, -, *, /)는 Stack에 저장해야 합니다. 2. 핵심 아이디어 Stack에는 연산자 들이 저장됩니다. 즉 먼저 들어온 연산자들은 아래쪽에 쌓이게 됩니다. 첫 번째 아이디어는 "("가 스택에 들어왔을 때입니다. "("는 일단 스택에 넣어줍니다. 그다음 연산자를 받아주고, ..
Mustache 사용해서 html 파일 읽을 때 한글 깨짐 1. 코드 구성 @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void configureViewResolvers(ViewResolverRegistry registry) { MustacheViewResolver resolver = new MustacheViewResolver(); resolver.setPrefix("classpath:/templates/"); resolver.setSuffix(".html"); registry.viewResolver(resolver); } } Mustache 템플릿 엔진을 사용해서 html 파일을 읽도록 설정을 해줬습니다. 로그인 페이지입니다. login.html ..
[백준] 2206번 벽 부수고 이동하기 (Java) 2206번 벽 부수고 이동하기 1. 문제 분석 0은 이동할 수 있는 칸, 1은 벽이 있어서 이동할 수 없는 칸입니다. (1, 1)에서 시작해서 (N, M)까지 가는데 최단 경로를 구해야 합니다. 이동은 상, 하, 좌, 우로 가능하고, 이때 벽(1)을 최소 한번 부수고 지나갈 수 있습니다. 문제에서 주어진 사항을 보고, BFS로 접근해야겠다는 생각을 했습니다. 방향이 존재하기 때문에 재귀적으로 구현을 했고, 벽을 1번 이상 부순 경우는 더 이상 나아가지 못하도록 막는 방법을 생각했습니다. 계속 틀렸다는 말이 나와서 2차원 배열 visited를 이용하여 문제를 변경해서 풀어봤는데, 이때는 시간 초과가 났습니다. 2. 핵심 아이디어 특정한 지점 (x, y)에 도달하는 데 있어서 벽을 1번 부수고 가는 경우와 ..
[백준] 1967번 트리의 지름 (Java) 1967번 트리의 지름 1. 문제 접근 특정 노드 2개를 선택해서 쭉 늘렸을 때, 가장 길이가 긴 두 노드를 찾아야 한다. 이 길이를 문제에서는 트리의 지름이라고 칭합니다. 1번 노드부터 탐색해서 가장 가중치가 큰 노드 하나를 선택합니다. 가장 가중치가 큰 노드는 반드시 트리의 지름의 한 점이 된다고 생각했습니다. 가장 가중치가 큰 노드를 하나 선택했으면, 해당 노드부터 BFS로 다시 탐색을 시작해서 가장 길이가 긴 값(트리의 지름)을 반환합니다. 2. 접근 과정에서 실수했던 부분 문제에서 "간선에 대한 정보는 부모 노드의 번호가 작은 것이 먼저 입력되고, 부모 노드의 번호가 같으면 자식 노드의 번호가 작은 것이 먼저 입력된다."라는 부분이 있었습니다. 이 부분을 잘못 이해해서 다음과 같이 문제 접근을 ..
[백준] 1238번 파티 (Java) 1238번 파티 문제 풀러 가기 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 1. 문제 분석 N명의 학생들은 X번 마을까지 갔다가 다시 돌아와야 한다. 이때 갔다가 다시 돌아오는 최단 거리를 구해야 한다. 각 마을에서 마을로 이동하는 데는 양의 가중치(거리)가 존재한다. 2. 생각해 보기 양의 가중치가 존재하기 때문에 다익스트라 아니면 플로이드 와샬을 고려해 본다. 플로이드 와샬 알고리즘은 O(N^3)의 시간 복잡도가 필요하다. 마을의 개수(N)가 최대 10^3이기 때문에 플..
[IntelliJ] 지역변수 밑줄 제거 백준 문제를 IDE로 풀고 있었는데, 사소한 오타로 계속 시간을 허비하게 되어서 인텔리제이 설정을 하면서 기록해 두려고 이 글을 작성합니다. 발생했던 휴먼에러는 i와 j를 구분하지 못했던 것. i와 j 밑에 밑줄이 그어지니깐 구분을 못하겠어서 불편해 죽겠다. 이건 아마도 Material Dark 테마를 설정하고 있는 사람만 해당될 문제라고 생각된다. 위 사진처럼 확대하면 구분할 수 있을거 같지만 작은 글씨로 보면 i와 j 밑에 밑줄이 있으면 구분을 못하겠다. j를 써야 할 자리에 자꾸 i를 쓴다던가 하는 오류를 줄이기 위해서 밑줄을 없애버리자. 설정하기 설정창을 열기 위해서 command + , 을 눌러 준다. 검색창에 "color scheme" 검색 Langauge Defaults -> Identifi..
[Java] 정적 팩토리 메소드 (Static Factory Method) Java 클래스에서 of(), from(), getInstance()와 같은 정적 팩토리 메소드를 많이 사용하는 것을 보고, 정적 팩토리 메소드를 사용하는 이유에 대해서 궁금하여 글을 정리하게 되었습니다. 1. 정적 팩토리 메소드(static factory method)는 무엇인가? 정적 팩토리 메소드는 객체 생성의 역할을 하는 클래스 메소드이다. 자바 코드를 짜봤다면 정적 팩토리 메소드를 써본 적이 있을 것입니다. public class Example { public static void main(String[] args) { // 직접 생성자를 통해서 객체를 생성 List list1 = new ArrayList(); list1.add("김씨"); list1.add("박씨"); list1.add("정씨..