본문 바로가기

ALL

💜 백준 3109 뱀 JAVA 1. 문제 분석 [3190 뱀 문제 링크](https://www.acmicpc.net/problem/3190) 지렁이 게임의 원리대로 움직이는 문제 빈 공간은 0, 사과는 1, 뱀이 존재하는 자리는 2로 표시한다. 뱀이 2차원 배열 내를 움직임 -> 움직이니까, 지나간 장소는 2가 아니라 다시 0으로 와야함. 사과를 먹으면 뱀의 몸집이 1 커짐 뱀이 벽에 부딪히면 게임오버 뱀이 자신의 몸에 부딪히면 게임오버 뱀은 방향 전환이 가능 -> 몇 초에 반시계, 시계 방향 중 어디로 움직일지는 주어진다. 게임이 몇 초간 걸리는지 구하기 (뱀은 한 번 움직일 떄, 2차원 배열에서 한 칸 움직이고, 이떄 시간이 1 든다.) 2. 푸는 원리 저기 나오는 1~5를 함수로 작성해서, 함수가 돌아가도록 하면 된다. 처음에는.. 더보기
💜 백준 2085 사탕게임 JAVA 1. 문제 설명 (사탕게임 링크)[https://www.acmicpc.net/problem/3085] 캔디 크러쉬 처럼, 서로 다른 종류의 캔디가 보이면 자리를 바꾼다. 그 후, 한 행, 혹은 한 열에서 같은 종류의 캔디끼리 나열되어 있으면 그건 터져서 사라짐. 주어진 2차원 배열에서 한 번 자리를 바꿨을 때 터질 수 있는 최대한의 캔디의 개수를 구하시오 2. 푸는 원리 서로 다른 종류의 캔디를 만나면 자리를 바꾼다. 모든 행을 검사하며, 일련의 연속성을 가진 캔디의 개수를 센다. -> 최고 길이 갱신 모든 열을 검사하며, 일련의 연속성을 가진 캔디의 개수를 센다. -> 최고 길이 갱신 최고 길이를 출력한다. 3. 코드 분석 import java.io.BufferedReader; import java.i.. 더보기
💜 백준 1038 감소하는 수 1. 문제 분석 감소하는 수 문제 링크 321, 952 등 제일 큰 자릿수부터 작은 자릿수로 올수록, 자릿수의 값이 작아지는 경우, 감소하는 수라고 한다. 반면 322, 235 등은 위의 정의에서 벗어나기에 감소하는 수가 아니다. 0을 0번째 감소하는 수, 1을 1번째 감소하는 수, 9를 9번째 감소하는 수 라고 했을 때, 주어진 N에 관하여, N번째 감소하는 수의 값을 구하여라 2. 푸는 원리 조합이다. 하지만 원래의 조합처럼 오름차순으로는 풀 수 없다. (1) 첫번째 자릿수를 고정하고, 그 자릿수를 limit으로 정한다. (2) 조합을 돌며, 두 번째 자릿수는 limit보다 작은 수 중에서 하나를 택한다. (3) 재귀를 돈다. (4) 세 번째 자릿수를 고를 때는 두 번째 자릿수가 넘어설 수 없는 li.. 더보기
💔 백준 14500 테트로미노 1. 문제 분석 백준 테트로미노 링크 2차원 배열에서 면 대 면으로 붙는 원소끼리 총 4개를 이었을 때, 원소간의 합이 최대값이 되는 경우를 구하여라. 2. 푸는 원리 테트로미노로 나올 수 있는 값들이 미리 나와 있다. 왼쪽 상단부터 1번이라고 하자. 그리고 왼쪽 -> 오른쪽으로 번호를 붙이겠다. 1번부터 4번에 해당하는 블럭은 DFS로 값을 구할 수 있다. 예를 들어보면, 다음과 같다. 하지만 5번의 경우 단순 dfs로 안 풀린다 왜냐하면 두번째 depth 부터 갈 수 있는 길이 2 갈래로 갈라지기 때문이다. 따라서 DFS로는 풀지 못하고, 중앙에서 시작하여 4방 탐색 중 3방을 고르는 조합으로 문제를 풀었다. 3. 코드 분석 import java.io.BufferedReader; import java.. 더보기
🖤 알고리즘 이론 - 순열과 조합 [JAVA] 0. 설명 하려는 것 (1) 순열, 조합, 중복 순열, 중복 조합의 정의 (2) JAVA 언어를 썼을 때, 구현 방법 1. 순열 (1) 순열의 뜻 nPr = n 개 중에서 r개를 중복 없이 뽑아서 순서 있게 나열하는 것을 말한다. 따라서 {1, 2, 3, 4, 5} 중 5P3 에서 {1, 2, 3} 과 {1, 3, 2}는 다른 숫자이다. (2) 구현 방법 순열은 재귀로 구현한다. 순열을 재귀로 구현하기 위해서는 다음과 같은 구성요소들이 필요하다. 전체 원소들에 대한 방문 배열 isVisited [] : 순열로 값을 뽑을 때, 중복이 없어야 하므로, 방문 배열을 통해, 이미 방문한 지점은 그냥 지나치도록 구현 해야 한다. 뽑힌 r개의 원소를 담을 배열 output [] : 전체 원소가 담긴 배열을 arr .. 더보기
💔 백준 2503 숫자야구 JAVA 1. 문제 설명 2503번 숫자야구 주소 영수가 숫자 3개를 머릿속으로 생각, 민혁이는 그 숫자를 맞추기 위해 3개의 수를 말하여 N번 추측을 한다. 민혁이가 말한 숫자 중 하나가 영수가 생각한 숫자와 위치도 같고, 숫자도 같으면 1 Strike, 민혁이가 말한 숫자 중 하나가 영수가 생각한 숫자와 위치는 다르지만, 숫자는 같으면 1ball, 이 행위를 N번 반복할 때, 영수가 생각한 숫자 3개가 될 수 있는 후보 수의 개수를 구하여라 2. 문제 푸는 원리 민혁이가 추측한 숫자가 영수의 머릿속 숫자와 얼마나 같은지는, 해당 숫자가 받은 ball_count를 보면 된다. 예시에서, 영수가 생각한 숫자가 324이고, 민혁이가 추측한 수가 429이면 1S 1B이다. 따라서 민혁이가 말한 숫자 N 개의 Ball.. 더보기
Spring 공식문서 Concept of AOP 번역 원본 문서AOP가 담고있는 발상AOP가 가지고 있는 몇몇 중심적인 생각들과 용어들을 정의하는 것으로 시작해보자! 여기서 쓰이는 용어들은 스프링 맞춤이 아니다. 따라서 불행하게도 AOP의 용어들은 특별히 직관적이진 못하다. 하지만, 만약 스프링이 AOP 개념 도입을 위한 그것만의 용어를 썼다면, 그것이 더 우리를 혼란스럽게 만들 것이다!1. 용어설명Aspect(관점): 복수의 Class들을 가로지르는 관심사에 대한 모듈화를 의미한다.(기존의 우리가 서버 로직을 공부할 때, 기능을 무엇이라 생각했는가? Service Class 하나가 곧 기능이라고 생각했다. 하지만 AOP에서는 관점을 달리하여, 클라이언트로부터 요구가 들어와서 Controller -> 복수의 서비스 로직 -> 다시 응답 까지의 전 과정을 하.. 더보기
Weaving과 Proxy에 대하여 깃허브에도 정리 올려놓았습니다.전수민_깃허브 주소Weaving과 Proxy 객체에 대하여이번 장에서 알아볼 것:AOP에서 Weaving이란 무엇인가? Proxy와의 관계는 어떻게 되는가?Proxy 객체란 무엇이고? AOP에서 사용되는 원리는 무엇인가?1. AOP에서 Weaving이란 무엇인가?AOP에서 weaving이란 부가기능(advice)을 그것이 타겟팅하는 본 기능에 장착하는 작업을 말한다. 따라서 weaving은 본기능에 영향을 주지 않으면서 부가기능을 연결시키는 AOP의 핵심 작업이다.weaving은 실행되는 시점에 따라 3가지로 종류가 나뉜다.(1) Compile Time Weaving(CTW)Spring에서 AOP를 구현하는 방법에는 AspectJ라는 라이브러리를 쓰는 것과, Spring A.. 더보기