오늘 공부한 내용 이펙티브 자바 - 아이템 15 공부 백준 bfs/dfs 1문제 풀기 스프링 핵심 원리 고급편 - 빈 후처리기까지 공부 💭느낀 점 & 배운 점 오늘은 벽 부수고 이동하기라는 백준 문제를 풀었는데, 골드 4 문제였는데 너무 어려워서 답을 보고 풀었다..ㅠㅠ 스프링 핵심 원리 고급편은, 맨날 처음~중간 부분까지만 보기를 반복했기에, 이번에는 중간부터 복습을 시작하기로 했다. 우선 @Aspect와 포인트컷 표현식 들을 완전히 익힌 후 다시 처음부터 복습할 것이다. 어제 못 적었는데, 리팩토링 강의에서 의도와 구현으로 메서드를 나누어 분리하라는 말이 참 좋았다. 🔥내일 공부할 내용 이펙티브 자바 - 아이템 16 공부 백준 bfs/dfs 1문제 풀기 스프링 핵심 원리 고급편 - @Aspect AO..
벽 부수고 이동하기 https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 풀이 import annotation.boj.BOJ; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.A..
캡슐화 혹은 정보 은닉이라고 하는 개념은, 컴포넌트의 모든 내부 구현을 완벽하게 숨기고, API를 통해서만 다른 컴포넌트와 소통하게 만듦으로써 서로의 내부 동작 방식에는 전혀 개의치 않게 해준다. 정보 은닉을 통해서 우리는 다음과 같은 이점을 얻을 수 있다. 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 시스템 관리 비용을 낮춘다. 각 컴포넌트를 더 빨리 파악하여 디버깅할 수 있고, 다른 컴포넌트로 교체하는 부담도 적기 때문이다. 소프트웨어의 재사용성을 높인다. 큰 시스템을 제작하는 난이도를 낮춰준다. 시스템 전체가 완성되지 않았더라도 개별 컴포넌트의 동작을 검증할 수 있기 때문이다. 자바에서는 정보 은닉을 위해 접근 제어 매커니즘을 사용하는데, 클래스, 인터페이스, 멤버..
오늘 공부한 내용 백준 bfs/dfs 1문제 풀기 백기선님 리펙터링 강의 시청 README-Generator 수정 💭느낀 점 & 배운 점 오늘은 거의 README-Generator만 하루종일 수정했다. 기존에는 너무 복잡해서, 이젠 클래스 이름이랑 어노테이션 하나만으로도 README를 생성해주도록 바꾸었다! 🔥내일 공부할 내용 이펙티브 자바 - 아이템 15 공부 백준 bfs/dfs 1문제 풀기 스프링 핵심 원리 고급편 - 처음부터 다시 공부 백기선님 리펙터링 강의 시청 자바의 정석 - 2.3 진법 정리해서 포스팅 (2의 보수법부터) 오늘 공부한 내용 포스팅 어노테이션을 지우면 README에서 삭제 · ShinDongHun1/RM-Generator@4e04a9b Permalink This commit do..
나이트의 이동 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)이 주어진다. 체스판의 크기는 l × l이다. 체스판의 각 칸은 두 수의 쌍 {0, ..., l-1} × {0, ..., l-1}로 나타낼 수 있다. 둘째 줄과 셋째 줄에는 나이트가 현재 있는 칸, 나이트가 이동하려고 하는 칸이 주어진다. 출력 각 테스트 케이스마다 나이트가 최소 몇 번만에 이동할 수 있는지 출력한다. 예제 입력..
오늘 공부한 내용 백준 bfs/dfs 1문제 풀기 스프링 핵심 원리 고급편 - 스프링 AOP - 전부 공부 토비의 스프링, 리액티브 프로그래밍 영상 시청 README-Generator 코드 리팩토링 오브젝트 읽기 💭느낀 점 & 배운 점 스프링 핵심 원리 고급편을 드디어 1회독을 했다!!!ㅠㅠㅠㅠ 진짜 너무 오래 걸렸고 너무 어렵고 아직도 어렵지만.. 그래도 조금은 이해가 된 거 같아서 뿌듯하다!! 백준 문제를 풀 때마다 객체지향적으로 풀고 싶은데, 막상 해보니 잘 안돼서.. 다시금 한번 공부하고자 오브젝트 책을 오랜만에 다시 시작했다!!! 다연이랑 같이 README-Generator를 개발하기로 했다!!! 사실 혼자서 해도 될 거 같지만, 협업해본 경험이 너무 적은 거 같아서 같이 만들기로 했다! 백기선..
숨바꼭질 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 예제 입력 1 5 17 예제 출력 1 4 풀이 import ..
토마토 시간 제한메모리 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 108918 39112 24578 34.428% 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토에 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로..