본문 바로가기

반응형

전체 글

(237)
LeetCode 378. Kth Smallest Element in a Sorted Matrix 자바 문제 풀이 문제 Kth Smallest Element in a Sorted Matrix - LeetCode 문제 해결 방법 보자마자 처음 들었던 생각은 구글 인터뷰 질문중 하나인 25마리 말 문제였다. 인터뷰 질문: 25마리 말 문제 위 문제의 해결방법은 위 문제와는 다르다 왜냐하면, 25마리 말 문제는 k가 정해져 있고. 이 문제는 정해져 있지 않기 떄문이다. 이 문제는 여러가지 해결법이 존재하지만, 가장 쉬운 방법은 이진검색이라고 생각한다. 다만, k수 만큼 남아있는지 카운트를 해야 하므로, 이는 log n 이 아닌 n log n이 걸린다. 알고리즘 이진탐색으로 가운데의 값을 기준삼아 왼쪽에 남아있는 수가 k만큼인지 확인한다. 우리가 원하는 수는 k번째에 있는 수 이므로, 남아있는 수가 k만큼이면, 그 다음에 ..
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..
웹 해킹 예제: 인증과 인가 취약점_CTF: Write 목표 계정 sfUser / sfUser1234 로 로그인한 뒤, 공지사항에 게시글을 작성하세요! 연습한 웹싸이트 http://ctf.segfaulthub.com:3481/auth5/ 공격 공격순서 일단 로그인 아이디와 비밀번호가 주어졌으므로, 일단 로그인을해서 공지사항과 게시글을 읽어본다 글쓰기 혹은 글수정 소스코드에서 찾기 위 리스트는 웹싸이트 접속후, 아이디와 비밀번호로 로그인하여, 공지사항의 글까지 클릭하기까지 사용된 요청과 응답 리스트이다. 위 소스 코드들을 하나씩 읽어가며 혹시 글 작성이나 글 수정을 주석처리하여 숨겨놨는지 확인한다. 그런게 없는것을 확인. 소스코드에 숨겨논 글작성 버튼이 없다 이때에는 위의 URL을 유심히 살펴본다 웹 개발자는 HTTP주소를 아래와 같이 설정했다 /auth5/i..
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..

반응형