github.com/taemin-kwon93 Github 보러가기 ->

Data Structures and Algorithms/Problems 20

LeetCode 46. Permutations

순열 만들기 서로 다른 정수를 입력받아 가능한 모든 순열을 리턴하라.Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order. Example 1:Input: nums = [1,2,3]Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]Example 2:Input: nums = [0,1]Output: [[0,1],[1,0]]Example 3:Input: nums = [1]Output: [[1]]순열이 만들어지는 것에 대해 먼저 이해할 필요가 있다. 요소가 3개 일때 순열의 수는 3! / (3 - 3)! ..

LeetCode 42. Trapping Rain Water 빗물 트래핑

빗물 트래핑높이를 입력받아 비 온 후 얼마나 많은 물이 쌓일 수 있는지 계산하라 Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining. Example 1:Input: height = [0,1,0,2,1,0,1,3,2,1,2,1]Output: 6Explanation: The above elevation map (black section) is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue sec..

LeetCode 23. Merge k Sorted Lists, k개 정렬 리스트 병합

문제 링크 문제 설명: k개의 정렬된 리스트를 1개의 정렬된 리스트로 병합하라.원문설명: You are given an array of k linked-lists lists, each linked-list is sorted in ascending order.Merge all the linked-lists into one sorted linked-list and return it. Example 1:Input: lists = [[1,4,5],[1,3,4],[2,6]]Output: [1,1,2,3,4,4,5,6]Explanation: The linked-lists are:[ 1->4->5, 1->3->4, 2->6]merging them into one sorted list:1->1->2->3->4->..

프로그래머스 완주하지 못한 선수

완주하지 못한 선수 링크 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 설명:수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 입출력 예participantcompletionreturn["leo", "kiki", "eden"]["eden", "kiki"]"leo"["mari..

LeetCode 3. Longest Substring Without Repeating Characters

문제 : 중복 문자가 없는 가장 긴 부분 문자열의 길이를 리턴하라. (링크) 풀이내용: 이 문제는 O(n)에 풀이가 가능하다.O(n) 풀이를 위해서는 '투 포인터'와 '슬라이딩 윈도우'를 이용해 길이를 구해야 한다. "abcabcbbc" 와 같은 문자열이 있다. (String s = "abcabcbbc")s의 0번째 인덱스인 a부터 2번째 인덱스 까지는 중복이 없다.이 범위는 left라는 포인터와 right라는 포인터의 범위를 조정해 left: 0, right: 2 의 값으로 길이를 구한다.3번째 인덱스 a를 순회할 때 '0번째 인덱스'에 'a'가 있다는 것을 알아야한다.중복 글자를 제외한 범위로 left를 조정하고 다시 조건에 해당하는 글자의 길이수를 계산한다.위 과정이 반복되는 중에 right 포인터..

LeetCode 24. Swap Nodes in Pairs, 페어의 노드 스왑

문제(링크):Given a linked list, swap every two adjacent nodes and return its head. You must solve the problem without modifying the values in the list's nodes (i.e., only nodes themselves may be changed.) Example 1: Example 2:Input: head = [1,2,3,4]Output: [2,1,4,3] Example 3:Input: head = []Output: []  문제 풀이: 1 → 2 → 3 → 4 → 5 → 6 인 연결 리스트에서 3 → 4를 4 → 3 으로 바꾼다고 할 때, 그 앞 1 이 가리키는 node와 뒤의 노드 6으로 연결..

LeetCode 15.3Sum

세 수의 합 링크Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i != j, i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0.Notice that the solution set must not contain duplicate triplets.배열을 입력받아 합으로 0을 만들 수 있는 3개의 엘리먼트를 출력하라. 입력: nums = [-1, 0, 1, 2, -1, -5] 출력: [[-1, 0, 1], [-1, -1, 2]]  해당 문제는 Brute force방법으로 O(n^3)에 답을 찾을 수 있으나, O(n^2)만에도 답을 낼 수 있다...

LeetCode 1.Two Sum

두 수의 합 링크 nums = [2, 6, 11, 15], target = 8 이 주어졌을 때, 배열에 있는 두 숫자를 덧셈하여 target과 같은 값을 만들 수 인덱스를 리턴하라. 'nums[0] + nums[1] == target' 인 경우 리턴은 'new int[] {0, 1};' 이다.  이 문제는 Map 자료형을 이용하여 O(n)에 풀이할 수 있다.인덱스를 조회할때 마다 조건에 대해 판별하고 조건에 부합하면 return 아니면 Map에 데이터를 추가하는 형식으로 진행.if (map.contains(target - nums[someIdx])) return new int[] {map.get(target - nums[someIdx]), someIdx}; map.put(nums[someIdx]..

LeetCode 스택과 큐 225. Implement Stack using Queues, 232. Implement Queue using Stacks

문제에 대한 설명은 링크로 대체 225. Implement Stack using Queueshttps://leetcode.com/problems/implement-stack-using-queues/description/ 232. Implement Queue using Stackshttps://leetcode.com/problems/implement-queue-using-stacks/description/  스택(Stack)과 큐(Queue)는 프로그래밍의 시작 부터 사용된 고전적인 자료구조 중 하나다.스택은 LIFO(Last-in-first-out, 후입선출), 큐는 FIFO(First-in-first-out, 선입선출)로 처리된다.  스택은 접시를 쌓고 꺼내는 것과 유사하다.3개의 접시를 선반에 저장할..

LeetCode 739.Daily Temperatures

문제설명: Given an array of integers temperatures represents the daily temperatures, return an array answer such that answer[i] is the number of days you have to wait after the ith day to get a warmer temperature. If there is no future day for which this is possible, keep answer[i] == 0 instead. 매일의 온도 리스트 'temperatures' 를 입력받아 더 따뜻한 날씨가 되기까지 며칠 기다려야 하는지 출력. Example 1:Input: temperatures = [73,74,75..