본문 바로가기

반응형

leetcode

(56)
LeetCode 2319. Check if Matrix Is X-Matrix 자바 문제 풀이 문제 설명문제: https://leetcode.com/problems/check-if-matrix-is-x-matrix/description/설명: 주어진 정사각형 행렬이 X-매트릭스인지 확인합니다. X-매트릭스는 주 대각선과 부 대각선을 제외한 모든 요소가 0인 행렬입니다.접근 방식아이디어: 각 요소가 X-매트릭스의 조건을 만족하는지 확인하기 위해 주 대각선과 부 대각선을 검사합니다.알고리즘: 주 대각선의 요소와 부 대각선의 요소를 제외한 모든 요소가 0인지 검사하여 X-매트릭스 여부를 판단합니다.코드class Solution { public boolean checkXMatrix(int[][] grid) { int n = grid.length; for (int i = 0;..
LeetCode 350. Intersection of Two Arrays II 자바 문제 풀이 문제 설명문제: https://leetcode.com/problems/intersection-of-two-arrays-ii/description설명: 두 개의 배열 nums1과 nums2에서 중복되는 숫자를 찾아내는 문제입니다.접근 방식아이디어: 각 배열의 숫자들을 HashMap을 사용하여 카운트하여 중복을 체크합니다. 이 문제의 함정은 각 배열에 중복되는 숫자가 존재할수 있다는 것입니다. 이미 정렬되어 있지 않다면, 두 포인터 를 이용해서 중복을 확인하는 방법은 비효율적입니다. 그러므로, 해시맵을 사용하여 중복숫자를 확인합니다알고리즘:먼저 nums1 배열의 각 숫자를 HashMap에 넣어 그 숫자의 출현 빈도를 카운트합니다.다음으로 nums2 배열을 순회하면서, 해당 숫자가 HashMap에 있는지 확인..
LeetCode 1550. Three Consecutive Odds 자바 문제 풀이 문제 설명문제: 주어진 정수 배열에서 연속적으로 나타나는 세 개의 홀수가 있는지 확인하세요. 만약 그런 경우가 존재한다면 true를 반환하고, 그렇지 않으면 false를 반환하세요.설명: 입력으로 주어진 정수 배열을 검사하여 연속적으로 나타나는 세 개의 홀수가 있는지 판단합니다. 배열 내의 각 숫자는 양수이며 배열의 길이는 최대 1000입니다.접근 방식아이디어: 배열을 순회하면서 각 요소가 홀수인지 검사하고, 연속적인 홀수의 개수를 셉니다. 연속된 홀수의 개수가 3이 되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.알고리즘:배열을 순회하면서 각 요소가 홀수인지 확인합니다.홀수인 경우 연속된 홀수(count)의 개수를 증가시키고, 그렇지 않으면 개수를 초기화합니다.연속된 홀수(count)의..
LeetCode 112. Path Sum 자바 문제 풀이 문제 LeetCode - The World's Leading Online Programming Learning Platform 문제 해결 방법 이 문제의 목적은, 주어진 이진 트리에서 루트부터 잎 노드까지의 경로 중 합이 주어진 targetSum과 같은 경로가 있는지 확인하는 것입니다. 그러므로, 이 코드는 주어진 이진 트리에서 재귀적으로 경로를 탐색하고, 경로 합이 targetSum과 같은지 확인합니다. 알고리즘 재귀 함수 호출 (Recursion): hasPathSum 함수는 재귀적으로 호출됩니다. 이 함수는 현재 노드의 값을 targetSum에서 빼고, 이 값을 새로운 targetSum으로 사용합니다. 기본 케이스 (Base Case): 재귀 호출이 시작될 때, 현재 노드가 null인지 확인하여 트..
LeetCode 2413. Smallest Even Multiple 자바 문제 풀이 문제 Smallest Even Multiple - LeetCode 문제 해결 방법 multiple of 2라는 뜻은 숫자가 짝수여야 한다는 뜻이다. multiple of n라는 뜻은 숫자가 n의 배수여야 한다는 뜻이다. 이 문제는 n의 배수중에 가장 작은 짝수를 찾는 문제이다. 처음에는 n을 반복해서 증가시키고, 그중 짝수면 리턴하는 알고리즘을 짰었다. 하지만 그러고 깨달았다. 두번째 n의 배수는 언제나 짝수일수밖에 없다. 그러므로 가장 효율적인 알고리즘은 아래와 같다 n이 짝수인지 확인한다. n이 짝수라면 n을 리턴한다. n이 짝수가 아니라면 다음배수는 언제나 짝수이다. 그러므로 n*2를 리턴한다. Github Link https://github.com/eunhanlee/LeetCode_2413_Sma..
LeetCode 75. Sort Colors 자바 문제 풀이 문제 Sort Colors - LeetCode 문제 해결 방법 정렬을 하는데 함수(메서드)를 쓰지 말라는 조건이 붙었으므로, 정렬알고리즘을 구현할수 있는지 물어보는 문제입니다. input이 0,1,2뿐이므로, 이를 이용한 로직 알고리즘으로 푸는 것이 가능합니다. 알고리즘 모든 엘레멘트를 순회하며, 0,1,2의 개수를 확인합니다 각 개수만큼 0,1,2순서대로 어레이에 넣습니다. Follow up에서 원하는 one-pass algorithm은 네덜란드 국기 알고리즘을 알고 있느냐고 묻는것이며, 이 알고리즘은 0,1를 정렬하는데 특화된 알고리즘 입니다. 또는 퀵정렬을 구현할수도 있습니다. 참고 네덜란드 국기(Dutch National Flag) 알고리즘이란 퀵정렬이란 Github Link https://git..
LeetCode 1672. Richest Customer Wealth 자바 문제 풀이 문제 Richest Customer Wealth - LeetCode 문제 해결 방법 2D어레이를 다루어서 값을 모두 더하고, 그를 이용해서 최적화를 할수 있는가 물어보는 문제이다. 처음에는 간단하게 다 더한 값을 어레이에 저장하고, 그 어레이를 지나며 최대값을 찾는 방식으로 답을 구하였는데, 최적화를 잘하면 굳이 어레이에 값을 저장할 필요가 없이 바로 최대값을 찾으면 된다. 일단 다 짠다음에서야 최적화가 가능하다는것을 깨달았는데, 바로 좋은 알고리즘을 짤수있도록 많이 문제를 풀어봐야 한다. 알고리즘 첫번째 반복문에서 각 어레이를 가져온다 두번쨰 반복문에서 각 어레이의 값을 모두 더한다 두번째 반복문이 끝나면 모두 더한값을 비교하여, 높은 수일 경우 저장한다 저장한 값을 리턴한다. Github Link h..
LeetCode 236. Lowest Common Ancestor of a Binary Tree 자바 문제 풀이 문제 Lowest Common Ancestor of a Binary Tree - LeetCode 문제 해결 방법 최소공통 조상LCA를 알고 있느냐고 묻고, 이를 구현할수 있느냐고 묻는 문제입니다. LCA의 전처리 과정은 이 문제에서는 사용할수 없습니다. Tree Node를 수정할수 없기떄문입니다. 그러므로, 보통 LCA알고리즘은 목표로하는 두 노드에서 부모로 올라가며 비교하는 방식이지만, 이 문제의 경우 root에서 하나씩 아래로 내려가며, p나 q가 현재 노드와 같은가 비교하여 구합니다. 참고 최소 공통 조상, LCA(Lowest Common Ancestor)이란 Github Link https://github.com/eunhanlee/LeetCode_236_LowestCommonAncestorofaB..

반응형