오늘 이분탐색 구현 방식에 따라 성능에 차이가 있다는 사실을 알았다. 왜 for문으로 투포인터 구현하면 시간 초과가 나고, while로 구현하면 통과인지 사실 아직도 모르겠다... 아는 고수 있으면 답변 주세요 ㅠㅠ 1. 출처 3649번: 로봇 프로젝트 각 테스트 케이스마다 한 줄에 하나씩, 구멍을 완벽하게 막을 수 있는 두 조각이 없다면 'danger'를 출력한다. 막을 수 있는 경우에는 'yes ℓ1 ℓ2'를 출력한다. (ℓ1 ≤ ℓ2) 정답이 여러 개인 경우에 www.acmicpc.net 2. 설계 1. 자바에서 불가능한 설계 처음에는 레고 조각 길이가 10cm = 10 * 10^7nm를 넘지 않는다고 해서 int[10*10^7+1]만큼 배열 공간을 확보해 갯수를 세주고 구멍의 너비 - 레고 조각의..
1. dependency를 추가한다. build.gradle 파일의 dependencies 안에 dev-tools를 추가한다. 그 후 뜨는 코끼리 모양을 눌러 적용해준다. implementation 'org.springframework.boot:spring-boot-devtools' 2. Recompile 설정한다. 변경사항이 있는 파일에 들어간다. 그 후 Build > Recompile '파일명'을 누르면 된다.
역시 dp는 어렵다... 오늘도 어김없이 답을 봤다. 답을 보면 다른 개발자분의 생각을 읽을 수 있다는 점에선 좋지만, 내 스스로 풀이 능력이 떨어지는 것 같아 항상 블로그에 글을 남긴다 ㅠ 1. 출처 https://www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 각 스티커에는 점수가 붙어있다. 하나의 스티커를 뜯으면 4방에 인접해있는 스티커는 못쓴다. 최대 점수가 될 수 있게 스티커를 뜯자! 2. 설계 1. 오답 설계 - 그리디 사실 처음에는 난..
1. 왜 AOP가 필요한가? AOP(Aspect Oriented Programming)는 관점 지향 프로그래밍이다. 공통관심사항과 핵심관심사항을 분리하는 것이다. 예를 들어 모든 메소드의 호출 시간을 측정하고자 할 때 수 천개의 메소드마다 일일히 try catch finally문 안에 System.currentTimeMillis();를 배치하는 수고스러움을 줄이고 싶을 때 AOP를 사용한다. 수 천개의 매소드에 코드는 모두 다르지만 공통 코드가 있기 때문에 AOP를 활용해 수고스러움을 덜 수 있다. 2. AOP 실습 1) @Aspect 해당 어노테이션을 써줘야 AOP를 사용할 수 있다. 기초 셋팅은 aop 패키지 > TimeTraceApp 클래스를 만들어 진행한다. package com.hello.hel..
스프링 데이터 JPA는 JPA를 편리하게 도와주는 기술, 라이브러리이다. 스프링 부트와 JPA만 사용해도 개발 생산성이 많이 증가한다. 개발 코드도 확연히 줄어든다. 여기에 스프링 데이터 JPA를 사용하면 리포지토리에 구현 클래스 없이 인터페이스 만으로 개발을 완료할 수 있다. 반복 개발해온 아주 기본적인 CRUD 기능도 스프링 데이터 JPA가 모두 제공한다. 즉, 개발자는 핵심 비즈니스 로직을 개발하는 데 집중할 수 있다. 1. 스프링 데이터 JPA로 이름찾기 놀랍게도 2개의 인터페이스를 상속받고, 아래 1줄의 코드로 이름을 찾는다. JpaRepository는 내가 만들어 놓은 인터페이스가 아닌 라이브러리를 쓴 것이다. 분명 아래 코드는 인터페이스이지만, JpaRepository를 받고 있으면 구현체를..
오늘의 문제는 트리문제이다. 사실 간단한 트리문제인 줄 알고 접근했다가 "메모리 초과"를 당해버렸다 ㅎㅎ... 1. 출처 15681번: 트리와 쿼리 트리의 정점의 수 N과 루트의 번호 R, 쿼리의 수 Q가 주어진다. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105) 이어 N-1줄에 걸쳐, U V의 형태로 트리에 속한 간선의 정보가 주어진다. (1 ≤ U, V ≤ N, U ≠ V) www.acmicpc.net 2. 설계 처음에는 쿼리수가 하나씩 주어지면 그 때마다 서브트리를 탐색하면서 count를 세줬다. 이 때 BFS를 사용했다. Queue를 사용하다보니 메모리 초과가 난 것이다. 큐를 안쓰고 어떻게 풀까? 고민했다. 그래서 모범 답안을 찾아보니 DFS + DP로 푼 개발자 분들이 많았..
BFS 등 알고리즘 공식에 빠져 순수 while for 등 반복문을 활용하는 능력이 떨어진 것 같다. 그냥 구현력이 많이 떨어진다고 느꼈던 이번 문제였다 ㅠㅠ 그래서 다시 기록하며 공부! 1. 출처 https://www.acmicpc.net/problem/16920 16920번: 확장 게임 구사과와 친구들이 확장 게임을 하려고 한다. 이 게임은 크기가 N×M인 격자판 위에서 진행되며, 각 칸은 비어있거나 막혀있다. 각 플레이어는 하나 이상의 성을 가지고 있고, 이 성도 격자판 위 www.acmicpc.net 2. 설계 문제가 헷갈린다. 확실히 짚고가자면, "각 플레이어마다 갈 수 있는 N칸을 가는 길도 성을 세울 수 있다" 각 플레이어의 턴마다 지을 수 있는 성을 체크하려면 DFS를 생각할 수 있겠지만 ..