본문 바로가기

반응형

leetcode

(56)
LeetCode 2235. Add Two Integers 자바 문제 풀이 문제 Add Two Integers - LeetCode 문제 해결 방법 단순하게 연산을 해서 리턴하는 능력을 시험하는 문제입니다. 가로()는 자바 우선순위에 따라서 사용할 필요가 없습니다. 참고 복잡한 표현식의 연산자 그룹화: 자바 연산자 우선순위 Github Link https://github.com/eunhanlee/LeetCode_2235_AddTwoIntegers_Solution.git 시간복잡도: O(1), 공간복잡도: O(1) class Solution { /** * Returns the sum of two integers. * * @param num1 The first integer. * @param num2 The second integer. * @return The sum of num1 ..
LeetCode 1512. Number of Good Pairs 자바 문제 풀이 문제 Number of Good Pairs - LeetCode 문제 해결 방법 반복문안에 또다른 반복문(for)과 다중조건(if, &&연산자)을 잘 잡을수 있는지 묻는 문제 입니다. Github Link https://github.com/eunhanlee/LeetCode_1512_NumberofGoodPairs_Solution.git 시간복잡도: O(n^2), 공간복잡도: O(k) class Solution { /** * 주어진 배열에서 동일한 쌍의 개수를 계산합니다. * * @param nums 정수 배열입니다. * @return 배열에서 동일한 쌍의 개수입니다. */ public int numIdenticalPairs(int[] nums) { int counter = 0; // 동일한 쌍의 개수를 세..
LeetCode 1431. Kids With the Greatest Number of Candies 자바 문제 풀이 문제 Kids With the Greatest Number of Candies - LeetCode 문제 해결 방법 알고리즘 일단 주어진 어레이에서 max값을 찾는다 각 어레이를 순회하며, 추가 사탕을 더한값이 max값보다 크면 true를 작으면 false를 추가한다. stream을 사용하는것은 추천하지 않습니다. 복잡한 요소가 있는것이 아니기때문에 단순한 advanced for문 정도면 충분합니다. if(candy + extraCandies < max)에서 candy + extraCandies를 따로 가로안에 넣어줄 필요도 없습니다. 자바 우선순위에 따라 필요하지 않습니다. if문은 물음표 연산자로 대체 가능합니다. if(candy+extraCandies= max)); } return result; }
LeetCode 217. Contains Duplicate 자바 문제 풀이 문제 Problem_Link 시간복잡도: O(n), 공간복잡도: O(n) class Solution { public boolean containsDuplicate(int[] nums) { // 배열의 요소를 저장하기 위해 HashMap을 생성합니다. HashMap map = new HashMap(); // 배열의 모든 요소를 순회합니다. for (int temp : nums) { // HashMap에 현재 요소가 이미 존재하는지 확인합니다. if (map.containsKey(temp)) { // 만약 존재한다면, 배열에 중복된 요소가 있다는 뜻으로 true를 반환합니다. return true; } else { // 존재하지 않는다면, HashMap에 현재 요소를 추가합니다. // 1은 중복된 요소가 있..
LeetCode 42. Trapping Rain Water 자바 문제 풀이 문제 Trapping Rain Water - LeetCode 문제 해결 방법 물을 받기위해서 최소한 1,0,1의 높이가 필요하므로, 최소한 3개이상의 엘레맨트가 필요합니다. 알고리즘 체크하길 원하는 포지션을 기준으로 왼쪽과 오른쪽에서 가장 높은 블럭 수를 구합니다. 두 높은 수에서 작은수 만큼 물을 채울수 있습니다. 이제 포지션의 블럭수를 확인해서 채울수 있는 물의 높이를 뺍니다. 모든 포지션을 반복합니다. 위 알고리즘을 사용하기 위해서 미리 루프문을 돌려서 오른쪽의 가장 높은 블럭수와 왼쪽의 가장 높은 블럭수를 미리 구해야 합니다. 아래와 같이 필요한 수를 확인할수 있습니다. Github Link https://github.com/eunhanlee/LeetCode_42_TrappingRainWater_..
LeetCode 771. Jewels and Stones 자바 문제 풀이 문제 Jewels and Stones - LeetCode 문제 해결 방법 이 문제는 입력된 스트링에 입력된 또다른 스트링의 각 문자가 존재하는지 확인 하는 문제입니다. 각각 한번씩은 확인할수 밖에 없으므로, O(n^2)입니다. 기초적인 문자열을 다루는 법을 아느냐고 묻는 문제입니다. 아래와 같이 풀기 위해서, toCharArray() 메서드에 대해서 알아야 하며, char타입 비교를 위해서 자바의 데이터 타입에 대하여 알아야 합니다. 자바의 Primitive 데이터 타입과 Reference 데이터 타입 Github Link https://github.com/eunhanlee/LeetCode_771_JewelsandStones_Solution.git 시간복잡도: O(n^2), 공간복잡도: O(1) clas..
LeetCode 35. Search Insert Position 자바 문제 풀이 문제 Search Insert Position - LeetCode 문제 해결 방법 주어진 문제의 잇풋은 정렬된 어레이입니다. O(log n)안에 풀어야 된다는 조건이 있습니다. 이미 정렬된 리스트에서 log n으로 찾는 방법은 이진검색(binary search)뿐입니다. 이 문제는 이진검색에 대해서 잘 알고, 이를 구현할수 있느냐고 묻는 문제입니다. 또한 이진검색을 구현시, 재귀함수를 사용할지 반복문을 사용할지 선택해야 합니다. 이 문제는 이전단계의 결과가 필요하지 않고, 하위문제로 분리할 필요도 없으므로, 반복문으로 구현하는것이 효과적입니다. 값을 찾지 못했을떄, 가장 가까운 값을 리턴해야 하므로, low값을 리턴합니다. mid값은 변경전이고, mid값에서 2를 나누고 남은 값은 버림을 하므로, hig..
LeetCode 1603. Design Parking System 자바 문제 풀이 문제 Design Parking System - LeetCode 문제 해결 방법 자바 오브젝트 생성을 할수 있느냐고 묻는 문제 입니다. 1번 답은 기본적인 오브젝트 생성이며, 협업하고, 나중에 업데이트 하기 좋은 코드 입니다. 2번 답은 이 문제에 있어서 매우 효율적이지만, 나중에 업데이트하기 어려운 코드 입니다. Github Link https://github.com/eunhanlee/LeetCode_1603_DesignParkingSystem_Solution.git 1번 답 class ParkingSystem { private int bigSlots; // 대형 차량용 사용 가능한 슬롯 수 private int mediumSlots; // 중형 차량용 사용 가능한 슬롯 수 private int sma..

반응형