본문 바로가기

분류 전체보기

(164)
[LeetCode] Python - 937. Reorder Data in Log Files https://leetcode.com/problems/reorder-data-in-log-files/ Reorder Data in Log Files - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 생각 파이썬에서는 sort에 key값을 지정하여 동일 조건일때 후순위 조건을 필터링 할 수 있다. 따라서 문자로그를 정렬할때 첫번째 기준으로 식별자를 제외한 나머지 문자를 사전순으로 정렬하고, 나머지 문자가 모두 동일하다면 식별자를 기준으로 정렬한다는 조건을 주었다...
[LeetCode] Python - 198. House Robber https://leetcode.com/problems/house-robber/ House Robber - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 생각 도둑이 i번째 집을 터는경우, i번째 집을 털지 않는 경우로 이 두가지 경우로 나뉘어집니다. 일반화시키면, i번째와 그 이후의 원소들에 대한 부분 문제로 이루어져있습니다. 그렇기 때문에, Top-Down 방식으로 접근하여 DFS와 메모이제이션을 활용하여 풀었습니다. 1. base case는 인덱스가 0 보다..
[LeetCode] Python - 1466. Reorder Routes to Make All Paths Lead to the City Zero https://leetcode.com/problems/reorder-routes-to-make-all-paths-lead-to-the-city-zero/ Reorder Routes to Make All Paths Lead to the City Zero - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 생각 DFS로 이웃한 노드들을 탐색하면서 현재 출발한 노드에서 0인 노드로 도착하면 True. 절대 도착하지 못하면 False. 이러한 로직을 갖고 구현하다가 실패..
[LeetCode] Python - 11. Container With Most Water https://leetcode.com/problems/container-with-most-water/ Container With Most Water - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 생각 투포인터를 잡아서 왼쪽 포인터와 오른쪽 포인터를 갱신해가면서 최대 영역값을 찾았습니다. 이때 언제 왼쪽 포인터와 오른쪽 포인터를 갱신해야하는지에 대한 아이디어 때문에 Greedy 문제로 분류된것 같습니다. 물의 영역은 두 막대의 최소 높이에 의해 결정됩니다. 따..
[LeetCode] Python - 74. Search a 2D Matrix https://leetcode.com/problems/search-a-2d-matrix/submissions/ Search a 2D Matrix - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 생각 2차원 배열에서 target 원소가 있는지 확인하는 문제입니다. 이때 효율적인 알고리즘을 작성하라는게 문제의 핵심입니다. 주어진 조건에서, row들이 정렬되있기 때문에 처음 시도는 특정 행을 선택하여 그 행에서 이진탐색을 통해 M*O(logn) 의 시간복잡도를 가지..
[LeetCode] Python - 122. Best Time to Buy and Sell Stock II https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/ Best Time to Buy and Sell Stock II - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 생각 Best Time to Buy and Sell Stock 문제와 다르게 동일날짜에 주식을 사고 다시 팔수있는 조건이 추가되었다. 이 문제도 DP로 분류되어있어서 최대 수익을 찾기위해 DFS + DP 로 접근하였는데 단순하게 생각하..
[LeetCode] Python - 121. Best Time to Buy and Sell Stock https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ Best Time to Buy and Sell Stock - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 생각 수익을 최대화하기위한 서로 다른 두 날짜를 골라야하는 문제입니다. 문제 유형은 DP로 되어있지만, 슬라이딩 윈도우로 풀었습니다. 수익이 최대가 될려면 낮은가격에 사서 비싼가격에 팔아야 하므로, 투 포인터를 사용하여 왼쪽 포인터는 가격이 낮은..
싱글턴(Singleton)패턴 이란? - 싱글톤 구현 방법 6가지 싱글턴(Singleton)이란? 생성자가 여러번 호출되더라도 실제로 생성되는 객체는 하나인 디자인패턴이다. 즉, 객체의 인스턴스가 오직 1개만 생성되는 패턴이다. 따라서, 어플리케이션 내에서 전역적으로 접근이 가능하다. 주의할점 상태를 가진 객체를 Singleton으로 만들면 안된다. 예를 들어, 멀티 스레드 환경에서 각기 다른 스레드가 객체의 상태를 변경시킬 가능성이 있기 때문이다. 싱글톤 패턴을 사용하는 이유? 한번의 객체 생성으로 재사용이 가능하기 때문에 메모리의 낭비를 방지할 수 있다. 주로 공통된 객체를 여러개 생성해서 사용하는 DB의 Connection Pool 에서 사용한다. 즉, 멀티 스레드 환경에서 싱글톤 객체를 공유하며 동시에 접하는 경우 동시성 문제도 해결해주는 패턴이다. 프로그램 내..