목록전체 글 (771)
쌓고 쌓다
https://school.programmers.co.kr/learn/courses/30/lessons/42627# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 방법수행할 작업 목록을 요청 시각 오름차순으로 정렬한다.우선순위 큐 선언한다. 소요 시간이 작은것이 먼저 뽑아져 나온다.X, Y 두개의 작업을 수행할 수 있을때 X 작업을 끝내는데 a 시간이 걸리고 Y 작업을 끝내는데 b 시간이 걸린다고하자두개의 작업 앞에 c 시간이 걸린다면X -> Y 순으로 작업을 한다면 각 작업을 끝내는데 걸리는 시간은X : c + a, Y : c + c + a + b 이다..

1) 체크, 언체크 예외먼저, 체크 예외와 언체크 예외 차이를 알아보자. Exception은 컴파일러가 체크하는 체크 예외이다.그러나 RuntimeException은 체크하지 않는다.RuntimeException의 자식 모두 언체크 예외이다. 어떤 차이를 가질까? 체크 예외- Repository, Service 코드에 throws 명시memberRepository 코드public Member findById(String memberId) throws SQLException { try { ... } catch (SQLException e) { throw e; }}만약 Repository에서 SQLException 체크 예외를 던진다면 throws로 던지는 예외를 명..
https://school.programmers.co.kr/learn/courses/30/lessons/43164#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법DFS를 사용한다.dfs(남은 티켓, 현재 공항, 현재까지의 누적 경로, 정답 후보(미정렬상태), 티켓 사용 여부, 티켓)모든 티켓을 사용했다면 정답 후보에 넣는다.티켓 반복문을 돌며 현재 공항과 티켓에 명시된 출발지가 동일하다면 depth + 1을 한다.단, 미사용 티켓이여야한다.모든 티켓을 사용했을때 정답 후보에 경로를 ","를 구분자로 넣는다.DFS 탐색을 종료하고 오름차순으로 ..
https://school.programmers.co.kr/learn/courses/30/lessons/49189#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법BFS로 어떤 노드를 방문할때마다 탐색 비용을 기록한다.최대 비용과 동일하다면 최대 비용과 동일한 비용으로 이동이 가능한 노드이므로answer++한다. 최대 비용과 다르다면 더 큰 비용으로 이동해야하므로answer=1으로 갱신해준다. BFS라서 최대 비용이 다르다면 항상 이전보다 더 큰 비용이다. 전체 코드import java.util.*;class Solution { p..

https://school.programmers.co.kr/learn/courses/30/lessons/42861 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 방법싸이클이 없이 최소 비용으로 모든 노드를 연결하는 최소 비용 신장 트리를 구하면 된다.최소 비용 신장 트리를 구하기 위한 알고리즘으로 크루스칼을 사용하였다.여기에 Union-Find 알고리즘도 사용된다. 처음에 DFS로 최소 비용 신장 트리를 구하면 되는게 아닌가 싶었는데DFS는 한 노드에 하나의 노드만 연결되게(진행 방향으로만) 탐색하기에 아래의 그림을 예로0번 노드에서 1과 2번 노드가 연..
https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 방법0명부터 200000000명을 이분탐색을 통해 n명이 이 다리를 건널 수 있는지 탐색하면 된다. 어떻게 풀지 전혀 모르겠는데 검색해보고 이렇게 이분탐색을 사용해서 문제를 푸는구나 신기했다... 전체 코드class Solution { public int solution(int[] stones, int k) { int answer = 0; int sta..
https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이 방법start와 end 두개의 위치를 이용해 푼다. start는 다음과 같은 상황일때 갱신된다.start ~ end에 start 위치의 보석이 2개이상일 경우 ( 모든 종류의 보석을 start ~ end 에 포함하고 있을 때 )start의 위치를 +1하면 모든 종류의 보석을 포함하며 최소 길이가 될 수 있다.end는 반복문을 돌며 0부터 끝까지 돌아주면된다.이때 start를 갱신할 수 있다면 갱신..

@Transactional을 붙이면 스프링이 AOP를 사용해서 트랜잭션을 편리하게 도와준다.스프링 AOP를 통해 프록시를 도입할 수 있다. 프록시를 붙이면 다음과 같이 동작한다.프록시를 사용해서 비즈니스 로직을 사용하는 서비스와 트랜잭션을 사용하는 객체를 분리할 수 있다. 스프링 부트를 사용하면 트랜잭션 AOP를 처리하기위한 빈들을 자동으로 등록해준다.트랜잭션 AOP는 @Transactional이 붙어있다면 트랜잭션 프록시를 적용해준다. 그러나 트랜잭션 AOP는 스프링 빈에 등록된 트랜잭션 매니저를 찾아서 사용한다.이제껏 나는 DataSource나 트랜잭션 매니저를 빈으로 등록한적이 없는데 어떻게 빈을 찾아쓴걸까? 원래라면 다음과 같이 빈을 직접 등록을 해줘야하지만@Bean DataSource dataS..