본문 바로가기

반응형

old/Algorithm Solving

(58)
LeetCode 328. Odd Even Linked List 자바 문제 풀이 문제 Odd Even Linked List - LeetCode 문제 해결 방법 링크드리스트를 잘 다룰수 있는지 묻는 문제입니다. 첫번쨰 노드가 null일떄, 두번쨰 노드가null일떄, 세번쨰 노드가 null일떄는 그대로 반환합니다. null → 그대로 리턴 1-null → 그대로 리턴 1-2-null → 그대로 리턴 1-2-3-null → 1-3-2로 리턴이 필요함 odd와 even 링크드리스트를 따로따로 만들고, 나중에 odd마지막에 even을 연결하는 알고리즘이면 풀수 있습니다. 위의 연결과 리턴값을 위해 각각 oddHead와 evenHead를 따로 선언해놓아야 합니다. 두번씩 연결하기 떄문에 루프문의 조건을 head ! =null 이 아니라 head.next까지 널체크 해야합니다. Github Li..
LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal 자바 문제 풀이 문제 Construct Binary Tree from Preorder and Inorder Traversal - LeetCode 문제 해결 방법 inorder와 preorder를 입력받아서 BFS로 출력하라는 문제입니다. inorder와 preorder의 특징을 사용하여, BFS로 출력해야 합니다. 참고 링크 그래프 탐색: DFS,BFS 트리: inorder, preorder, postorder preorder의 특징은 root, left, right순으로 출력이 된다는 것입니다. 가장 먼저오는 노드는 무조건 root노드 입니다. inorder의 특징은 left, root, right 순으로 출력이 된다는 것입니다. 루트노드만 알면, 왼쪽과 오른쪽에 어떤 노드가 올지 알수 있습니다. 알고리즘 preord..
인터뷰 질문: 25마리 말 문제 인터뷰 문제 25마리의 말 중 상위 3마리를 찾기 위해 필요한 최소한의 경기 수는 몇 개인지 알려주세요. 한 번의 경기에는 5마리의 말을 출전시킬 수 있으며, 타이머는 없습니다. 해결 방법 25마리의 말 중 상위 3마리를 찾기 위해 필요한 최소한의 경기 수를 구하기 위해 다음과 같은 절차를 따릅니다: 25마리의 말을 5개 그룹으로 나눕니다. 각 그룹은 5마리의 말로 구성됩니다. 각 그룹의 말들을 서로 경주시킵니다. A, B, C, D, E라는 이름의 다섯 경기를 진행합니다. 이제 다섯 경기의 결과가 있고, 전체적으로 상위 3마리를 결정해야 합니다. 다음과 같은 방법으로 진행합니다: 각 경기에서 1등으로 도착한 말들 (A, B, C, D, E 경기에서 1등으로 도착한 말들)을 뽑아 새로운 경기에 출전시킵니..
LeetCode 17. Letter Combinations of a Phone Number 자바 문제 풀이 문제 LeetCode - The World's Leading Online Programming Learning Platform 문제 해결 방법 이 문제는 모든 조합을 찾는 문제입니다. 조합을 찾는 문제이므로, 백트래킹 알고리즘을 사용할수 있습니다. 부분문자열과 순열, 그리고 조합의 차이점, 경우의 수란? 백트래킹은 가능한 모든 해를 탐색해야 할 때 혹은 모든 가능한 조합을 고려해야 할 때 효율적이며, 위 문제는 가능한 모든 조합을 찾는 문제입니다. backtracking 알고리즘이란? 알고리즘 각 숫자에 대응되는 문자을 어레이에 미리 final로 선언합니다. 0 혹은 null일경우 빈 list를 리턴합니다. 재귀함수를 시작합니다. 한 문자를 선택하여, 시작 가능한 모든 수를 탐색하고, 스트링빌더에 추가합..
LeetCode 2469. Convert the Temperature 자바 문제 풀이 문제 Convert the Temperature - LeetCode 문제 해결 방법 double 어레이를 선언하고 맞는 수를 입력할수 있는지 물어보는 문제입니다. Github Link https://github.com/eunhanlee/LeetCode_2469_ConverttheTemperature_Solution 시간복잡도: O(1), 공간복잡도: O(1) public class Solution { /** * Converts a temperature value from Celsius to Kelvin and Fahrenheit. * * @param celsius the temperature value in Celsius * @return an array containing the converted te..
LeetCode 1470. Shuffle the Array 자바 문제 풀이 문제 Shuffle the Array - LeetCode 문제 해결 방법 논리적으로 잘 풀어서 반복문을 사용할수 있는지 시험하는 문제입니다. Github Link https://github.com/eunhanlee/LeetCode_1470_ShuffletheArray_Solution 시간복잡도: O(n), 공간복잡도: O(n) public class Solution { /** * 주어진 요소의 개수 n을 기준으로 정수 배열을 섞습니다. * * @param nums 입력 정수 배열 * @param n 섞을 요소의 개수 * @return 섞인 배열 */ public int[] shuffle(int[] nums, int n) { int[] result = new int[nums.length]; for (int..
LeetCode 341. Flatten Nested List Iterator 자바 문제 풀이 문제 Flatten Nested List Iterator - LeetCode 문제 해결 방법 이 문제는 심플하게 자료구조를 사용하여 iterator를 구현할수 있냐고 묻는 문제입니다. Stack, LinkedList, Array등을 사용해서 구현할수 있습니다. 다만 콜렉션의 List를 사용하는것은 문제에서 요구하는것과 조금 어긋나므로, List는 사용하면 안됩니다. nestedList를 모두 꺼내서 하나의 리스트로 작성(평면화)해야 하므로, 스택을 사용하는것이 가장 효율적입니다. Github Link https://github.com/eunhanlee/LeetCode_341_FlattenNestedListIterator_Solution Stack import java.util.*; /** * 중첩된 정수..
LeetCode 171. Excel Sheet Column Number 자바 문제 풀이 문제 Excel Sheet Column Number - LeetCode 문제 해결 방법 A~Z를 1~26 만드는 것은 쉽습니다. A는 아스키코드로 65이므로, 64 나 ‘@’를 뺴거나, 혹은 ‘A’+1을 한다면 숫자로 출력이 됩니다. 아래 링크를 참조. 10진수 아스키 코드 표 JAVA에서 char타입 사칙연산은 어떻게 작동할까? 자리수에 따라서 추가되는것을 고려하는것이 필요합니다. ZY=Z26 + Y = 2626 + 25 = 676 + 25 = 701 이므로, 뒷자리에서 부터 계산하면 자리수에 필요한 수를 얻을수 있습니다. 계산식 (자리수가 1이상일떄) 알파벳수 * 26^자리수 Github Link https://github.com/eunhanlee/LeetCode_171_ExcelSheetColumn..

반응형