본문 바로가기

programmers12

[프로그래머스] (깊이/너비 우선 탐색) 단어 변환 단어집합을 탐색해 나가면서 한 글자만 다른 단어를 찾아낸 후, 그 단어로 다시 탐색을 시작하여 최종 타겟단어와 일치할 때까지의 탐색 깊이를 측정한다. 단, 최종 타겟 단어에 이르기 까지 여러가지 경로가 있을 수 있는데, 이 중 가장 짧은 길이를 반환하면 된다. 타겟 단어와 1개의 알파벳만 다른지 판별하는 함수는 별도로 작성했다. class Solution { int answer = Integer.MAX_VALUE; public int solution(String begin, String target, String[] words) { boolean[] isChecked = new boolean[words.length]; dfs(begin, target, words, isChecked, 0); if (ans.. 2021. 4. 7.
[프로그래머스] (깊이/너비 우선 탐색) 네트워크 Computer를 탐색해나가며 나와 연결된 Computer를 찾아서 하나의 네트워크로 묶어야 한다. 1. 1번 컴퓨터를 시작으로 탐색을 시작한다. isConnect[0] = true 마킹2. 1번 컴퓨터와 연결된 컴퓨터를 찾는다.(computers[?][0] == 1 인것)3. 3번째 배열에서 computers[2][1] == 1 을 만족하므로 isConnect[2] = true 마킹4. 다음 탐색을 시작한다. 5. 다시 3번 컴퓨터와 연결된 컴퓨터를 찾는다.(computers[?][2] == 1 인것)6. 4번째 배열에서 computers[3][2] == 1 을 만족하므로 isConnect[3] = true 마킹7. 다음 탐색을 시작한다.8. 4번 컴퓨터와 연결된 컴퓨터를 찾는다.(comcomputer.. 2021. 3. 29.
[프로그래머스] (깊이/너비 우선 탐색) 타겟 넘버 입력 배열 노드를 순차로 탐색 하면서 매 탐색시 양갈래(지나온 노드들의 sum에서 현재노드를 +하는 경우, -하는경우) 로 탐색하며 재귀호출 하여 마지막 노드에 도달했을때 노드들의 sum이 타겟 넘버와 같으면 타겟 적중을 +1 한다. class Solution { public int solution(int[] numbers, int target) { int answer = 0; answer = calcNum(numbers, 0, target, 0); return answer; } public static int calcNum(int[] source, int index, int target, int sum) { // 마지막 노드에 도달했을 때 if(index == source.length) { // 타겟 .. 2021. 3. 28.
[프로그래머스] (완전탐색) 소수 찾기 먼저 주어진 숫자형 문자열로 만들 수 있는 모든 숫자를 찾고 그 다음 만들어진 숫자에서 소수를 골라낸다. "17" 로 만들 수 있는 숫자는 [1, 7, 17, 71] 이고 여기서 소수는 [7, 17, 71] "011" 로 만들 수 있는 숫자는 [0, 1, 10, 11, 101, 110] 이고 여기서 소수는 [11, 101] 그림에서 보는 것 처럼 배열에서 루프를 돌며 숫자를 하나씩 뽑고, 남은 배열을 저장하면서 들고다니는 함수를 만들어서 계속 재귀호출하며 남은 배열이 없으면 전체 조합을 완료한 것으로 본다. public void pick(List arr, String picked, List permArr) { for (int i = 0; i < arr.size(); i++) { // 입력받은 배열에서 하.. 2021. 3. 27.
[프로그래머스] (완전탐색) 모의고사 단순히 문제 그대로... 완전탐색 했다. 세명의 찍는 패턴을 바탕으로 정답수를 구해서 별도의 배열에 저장하고, 그 중에 최대 정답수와 일치하는 것을 정답배열에 다시 담았다. 수포자가 3명이라 가능한 방법같은데.. 여러명이면 다른방법으로 해야 될 것 같다. import java.util.*; class Solution { public int[] solution(int[] answers) { int[] supo1 = {1,2,3,4,5}; int[] supo2 = {2,1,2,3,2,4,2,5}; int[] supo3 = {3,3,1,1,2,2,4,4,5,5}; int supo1Correct = 0; int supo2Correct = 0; int supo3Correct = 0; ArrayList cnt = .. 2021. 3. 25.
[프로그래머스] (정렬) H-Index 논문배열을 역정렬하거나, Arrays.sort를 해서 뒤부터 찾도록 하자. 원소의 인용횟수(인자) vs 정렬한 배열에서 원소보다 크거나 같은 갯수(루프 반복횟수) 를 세어서 역전이 일어나기 바로 직전이 H-Index. import java.util.*; class Solution { public int solution(int[] citations) { int answer = 0; Arrays.sort(citations); int len = citations.length; for (int i = len - 1; i >= 0; i--) { int citation = citations[i]; int iy = len - i; if(iy 2021. 3. 25.
반응형