본문 바로가기

Java

(501)
[자바 알고리즘 인터뷰] 12장 그래프 (9) 코스 일정 https://leetcode.com/problems/course-schedule/description/  - 0을 완료하기 위해선느 1을 끝내야 한다는 것을 [0,1] 쌍으로 표현하는 n개의 코스가 있다.- 코스 개수 n과 이 쌍들을 입력으로 받았을 때 모든 코스가 완료 가능한지 판별하라  풀이 1) DFS로 순환 구조 판별  - 이 문제는 그래프가 순환(Cyclie) 구조인지를 판별하는 문제로 바꿀 수 있다. - 순환 구조라면 계속 뱅글뱅글 맴돌게 될 것이고, 해당 코스는 처리할 수 없기 때문이다. - 따라서 순환 판별 알고리즘을 구현하면 이 문제를 풀이할 수 있다. Map> finishtoTakeMap = new HashMap();//완료하기 위해 처리해야 하는 일정을 finish->take 형태의..
[자바 알고리즘 인터뷰] 12장 그래프 (8) 여행 경로 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr     풀이 1) 일정 그래프 반복 DFS 2024.05.17 - [Java/알고리즘] - [자바 알고리즘 인터뷰] 12장 그래프 (7) 일정 재구성 [자바 알고리즘 인터뷰] 12장 그래프 (7) 일정 재구성https://leetcode.com/problems/reconstruct-itinerary/description/    - [from,to]로 구성된 항공권 목록을 이용해 JEK에서 출발하는 여..
[JAVA] SWEA 2806. N-Queen https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV7GKs06AU0DFAXB&categoryId=AV7GKs06AU0DFAXB&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=JAVA&select-1=3&pageSize=10&pageIndex=1 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com  2024.02.23 - [Java/백준] - [JAVA] 백준 9663 N-Queen [JAVA] 백준 9663 N-Queen9..
[JAVA] SWEA 1208. [S/W 문제해결 기본] 1일차 - Flatten https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV139KOaABgCFAYh&categoryId=AV139KOaABgCFAYh&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=JAVA&select-1=3&pageSize=10&pageIndex=1 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com  정답  import java.util.*;class Solution{ //배열에서 최댓값인덱스 찾기 public static ..
[자바 알고리즘 인터뷰] 12장 그래프 (7) 일정 재구성 https://leetcode.com/problems/reconstruct-itinerary/description/    - [from,to]로 구성된 항공권 목록을 이용해 JEK에서 출발하는 여행 일정을 구성하라. 여러 일정이 있는 경우 사전 어휘순(Lexical Order)로 방문한다.   풀이 1) 일정 그래프 재귀  DFS - 여행 일정을 그래프로 구성해 DFS를 진행하면 징행된 경로를 정답으로 처리할 수 있다. - 주의할 점은 중복된 일정일 경우 어휘순으로 방문한다는 점이다, - 입력값인 여행 일정은 끝까지 이어질 것이므로 from->to 형태의 그래프로 구성해 끝까지 탐색하면 된다.  //여행 일정을 from->to 형태의 그래프로 구성for(List ticket : tickets) { ..
[자바 알고리즘 인터뷰] 12장 그래프 (6) 부분집합 https://leetcode.com/problems/subsets/description/  - 모든 부분집합을 리턴하라   풀이 1) 트리의 모든 DFS 결과  - 트리를 구성하고 트리를 DFS하는 문제로 풀이할 수 있다.- 자기 자신보다 큰 값이 자식 노드인 트리형태가 된다.   - path에 지금까지 탐색한 경로를 저장하며 인덱스를 증가시키면서 DFS한다. - 별도의 종료 조건없이 모든 탐색의 경로가 부분집합이 되므로 탐색할 때 마다 매번 결과를 추가하면 된다.  public void dfs(List> results, int nums[], int index, Deque path){ //모든 탐색 경로를 매번 결과에 추가 results.add(new ArrayList(path)); /..
[자바 알고리즘 인터뷰] 12장 그래프 (5) 조합의 합 https://leetcode.com/problems/combination-sum/description/   - 숫자 집합 candidates를 조합하여 합이 target이 되는 엘리먼트들을 나열하라. 각 숫자는 중복으로 나열 가능하다.   풀이 1) DFS로 중복 조합 그래프 탐색   - 합 target을 만들 수 있는 모든 번호 조합을 찾는 문제인데, 앞서 순열 문제와 유사하게 DFS로 풀이할 수 있다. - 입력값의 중복 조합 그래프를 풀이하는 문제로 도식화할 수 있다.   - 모든 중복 조합에서 찾아야 하기 때문에 항상 부모의 값부터 시작하는 그래프로 구성할 수 있다. - 조합은 각각의 노드가 자기 자신보다 더 큰 숫자의 나열로 정리할 수 있다.   public void dfs(List> resul..
[JAVA] 프로그래머스 - 두 개 뽑아서 더하기 https://school.programmers.co.kr/learn/courses/30/lessons/68644 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr     정답  import java.util.*;class Solution { public int[] solution(int[] numbers) { HashSet set = new HashSet(); for(int i=0; i