본문 바로가기

전체 글

(894)
[자바 알고리즘 인터뷰] 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
[JAVA] 프로그래머스 - 핸드폰 번호 가리기 https://school.programmers.co.kr/learn/courses/30/lessons/12948 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   정답  class Solution { public String solution(String phone_number) { StringBuilder answer = new StringBuilder(); int len = phone_number.length(); for(int i=0; i   다른 사람의 풀이  class Solut..
[JAVA] 프로그래머스 - 숫자 문자열과 영단어 https://school.programmers.co.kr/learn/courses/30/lessons/81301 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr     Character.isDigit() - char형 문자하나가 숫자인지 아닌지 검사하고 boolean 형값을 반환- 숫자면 true, 그외에는 false Character.isAlphabetic()- char형 문자가 알파벳인지 판단  Character.isLetter()- char형 문자가 문자인지 판단 Character.isSpace()- char형 문자가 공백문자인지 판단    정답  - ..
[JAVA] 프로그래머스 - 나누어 떨어지는 숫자 배열 https://school.programmers.co.kr/learn/courses/30/lessons/12910 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    List를 배열로 변환 [Java] 배열을 List로, List를 배열로 변환하기 - 어제 오늘 내일 (tistory.com) [Java] 배열을 List로, List를 배열로 변환하기배열을 List로 Arrays.asList() new ArrayList(Arrays.asList()) Collectors.toList() ArrayList를 배열로 toArray() - java.util.List ..
[JAVA] 프로그래머스 - 시저 암호 https://school.programmers.co.kr/learn/courses/30/lessons/12926 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    정답 - 현재 문자가 대문자인지 소문자인지 판단하여 기준 문자를 설정- 대문자일 경우 'A'(아스키코드 65), 소문자인 경우 'a'(아스키코드 97)- 현재 문자의 위치를 기준 문자로부터의 상대적 위치로 변환한다. - 'A' 또는 'a'를 0으로 두고, 이를 n만큼 이동시킨다. - 이동된 값이 알파벳 범위 내에 있도록 26으로 나눈 나머지를 구한다. - 다시 기준 문자를 더하여 올바른 아스키 ..
[JAVA] 프로그래머스 - 없는 숫자 더하기 https://school.programmers.co.kr/learn/courses/30/lessons/86051 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    정답  class Solution { public int solution(int[] numbers) { int answer = 45; //0~9까지의 총합 for(int i=0; i   다른 사람의 풀이  import java.util.*;class Solution { public int solution(int[] numbers) { ..