분류 전체보기
-
[Java] 백준 11729 하노이 탑 이동 순서Programming/Algorithm 2021. 3. 5. 19:59
문제 하노이의 탑에 있는 N개의 원판을 '1'에서 '3'으로 이동시킬 때, 탑의 이동 순서를 출력하는 문제이다. 하노이의 탑 풀이는 공식처럼 외워서 사용하는 편이 편한 것 같다. 핵심적인 논리는 N개의 원판을 '1'에서 '3'으로 이동시키기 위해 우선 N-1개를 '1'에서 '2'(도움닫이 공간)으로 이동시킨 후, 마지막 1개의 원판을 '3'으로 이동시키는 것이다. 이동시킨 후엔 '2'(도움닫이 공간)으로 이동시킨 원판을 다시 '3'으로 이동하는 방식으로 진행한다. 그림을 그려가며 이해하는 것이 좋다. 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main {..
-
[Java] 백준 1780 종이의 개수Programming/Algorithm 2021. 3. 5. 19:53
문제 잘라진 종이가 한 숫자로만 이루어져 있는지를 검사하고 그렇다면 종이 개수를 추가하고, 아니라면 9등분으로 나눠 다시 종이 내의 숫자를 검사하는 문제이다. 9등분으로 나누는 부분을 재귀로 처리하였다. 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int N; static int[][] map; static int[] res; public static void main(String[] args) throws IOException { solution(); } static v..
-
[Java] 백준 11728 배열 합치기Programming/Algorithm 2021. 3. 5. 19:48
문제 정렬되어 있는 배열 A와 B가 주어질 때, A와 B를 합친 새로운 배열을 정렬된 형태로 출력하는 문제이다. A와 B의 가장 작은 값을 비교하여 더 작은 값을 새로운 배열에 추가하고 인덱스를 하나 증가시키는 방식을 사용한다. 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader..
-
[개발노트] Spring + JPA + Oracle 연동 문제해결Programming/Note 2021. 3. 5. 10:22
프로젝트를 위해 정리한 글입니다. (완료) 문제점 (초기에 사용한 오라클 설치에 참고한 자료: goddaehee.tistory.com/191) - SQL Developer에서나 IntelliJ의 datasource tap을 이용해서 DB를 조작하는 데에는 문제가 없었다. - 하지만 Spring 프로젝트에서는 DB에 접근하지 못했다. 해결시도 1) 기존의 오라클 sw 사용 : 노트북 세부사항 확인(listener.ora, tnsnames.ora 파일 수정), 방화벽 체크.... [실패] - 참고자료 : jhnyang.tistory.com/272 2) 기존 버전 삭제 후 다른 오라클 버전 사용[성공] 1. 기존의 오라클 사용하여 시도 프로젝트를 실행하면 다음과 같은 오류가 발생했다. The Network A..
-
[Java] 프로그래머스 징검다리Programming/Algorithm 2021. 3. 5. 01:39
문제 바위들의 위치가 담긴 배열이 있고, 제거할 바위 수 n가 있다. 바위 배열에서 n개를 제거한 이후 각 지점사이 거리 최솟값 중 가장 큰 값 리턴해라. - distance : 도착지점까지의 거리 1~10억 - rocks 요소 개수 : 1~5만 - n 제거할 바위 개수 : 1 ~5만 1) 조합 처음엔 단순하게 n개의 숫자 중 n개를 고르는 시행 만든 뒤 최댓값을 비교하는 방식이 떠올랐다. 하지만 input 값이 커진다면 조합의 경우의 수가 매우 커지기 때문에 효율적인 방식이 아니다. 2) 이진탐색 최소거리를 탐색기준으로 설정한 뒤 추정한 거리로 바위 개수를 세고, '추정한 바위 개수' >= '바위 총개수 - n' 가 남아있어야 최소거리 조건을 만족한다. 조건을 만족한 값들 중 최댓을 구해서 리턴하면 된..
-
[Java] 백준 10815 숫자 카드Programming/Algorithm 2021. 3. 3. 21:06
문제 상근이가 가진 숫자카드 N개가 주어지고, 각각의 카드에는 -10,000,000 이상 10,000,000 이하의 정수가 적혀있다. 그 다음 M개의 정수가 주어질 때 상근이가 가지고 있는 숫자인지를 판별해서 출력하는 문제이다. 2가지 방식으로 풀이했다. 1) 배열로 방문체크 - 카드가 가질 수 있는 숫자의 범위만큼 boolean배열을 만든다. - 상근이가 가지고 있는 숫자라면 해당 인덱스의 값을 true로 초기화한다. - M개의 카드 인덱스를 받아와서 boolean배열의 값이 true인지 확인한다. 2) 이진탐색 - 상근이가 가진 카드 배열을 오름차순 정렬한다. - M개의 카드 값을 받아와서 상근이의 카드배열을 이진탐색한다. 코드 import java.io.BufferedReader; import ja..
-
[Java] 백준 2110 공유기 설치Programming/Algorithm 2021. 3. 3. 20:57
문제 집 N개에 공유기 C개를 설치한다. 공유기가 설치된 거리가 가장 가까운 두 집을 골라 두 집의 거리 차를 구한 뒤에 거리의 차이가 최대가 되는 경우의 거리차를 출력하는 문제이다. 1) 브루트포스 방식 (X) 문제를 곧이곧대로 생각한다면 다음과 같이 풀이할 수 있다. - N개의 집 중 공유기를 설치할 C개를 고른다 => nCc (조합) - 모든 경우의 수에서 가장 인접한 집 2채의 거리차를 구하여 거리차의 최댓값을 리턴한다. 하지만 N과 C 범위의 최댓값(N:20만, C:20만)으로 입력이 주어진다면 시간 제한을 통과하지 못하게 된다. (20만 팩토리얼..) 따라서 해당 방식으로 문제를 풀 수 없다. 2) 이진탐색 방식 문제를 살짝 다르게 생각하면 이진탐색방식으로 논리를 설계할 수 있다. 문제에서 요..