Study

글 제목에서부터 알 수 있듯이, 순열을 구하는 문제이다. 자세한 내용은 여기에서 볼 수 있다. 풀이 방법은 총 두 가지를 소개할 예정이다. 하나는 DFS, 다른 하나는 반복문을 사용한 방법이다. 첫 번째 방법 - DFS 아마 많이들 생각할 방법일 것 같다. 순열을 만들 숫자 N개를 담은 리스트를 nums이라 했을 때, N!개의 원소를 담은 리스트를 최종 리턴해야 하니까 말이다. 코드는 Discuss의 글에서 찾았고, 아래와 같다. def permute(self, nums): res = [] self.dfs(nums, [], res) return res def dfs(self, nums, path, res): if not nums: res.append(path) for i in range(len(nums)..
거의 한 달만에 포스팅하는 알고리즘 코딩 글이다. 바빴기도 하지만, 나태해진 이유도 있는 것 같다. 이 문제는 Solution이 있는 문젠데, 개인적으로 좋은 문제라고 생각되어서 Solution에 있는 풀이 중 한 방법에 대해 작성해봤다. 문제는 여기에서 볼 수 있다. 문제 문제 설명에 나오는 그림만 봐도 어떤 문제인지 알 수 있다. N개의 기둥들의 높이가 담긴 배열이 주어질 때, 하늘에서 비가 내린다고 가정하면 얼마나 많은 양의 물이 기둥들 사이에 갇히는 지에 대한 문제이다. 풀이 사실 이 문제도 두 번째 풀어보는 것인데, 두 번의 풀이 모두 Brute Force로 해결하려 했었다. 하지만, Solution만 봐도 Dynamic Programming(DP)나 Stack을 이용한 풀이 등 다양한 풀이가 ..
일주일 전쯤, MS SQL의 BEGIN TRAN 덕분에 겪었던 삽질에 대해 글을 쓰며 트랜잭션의 개념에 대해 잘 모른다는 생각이 들었다. 그래서 아래 글들을 참고하여 공부하였고, 정리 글을 남긴다. 출처) 1. 위키백과) 데이터베이스 트랜잭션 2. Naver D2) DBMS는 어떻게 트랜잭션을 관리할까? 3. Tistory) 트랜잭션(Transaction)이란? 4. Tistory) [DB기초] 트랜잭션이란 무엇인가? 데이터베이스 트랜잭션? 위키백과에서는 트랜젹션을 아래와 같이 정의하고 있다. "데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위" 여기서 "유사한 시스템"이란 트랜잭션의 성공과 실패가 분명하고, 트랜잭션이 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다. 조금 더 ..
운영 업무를 하며 '프로시저'라는 단어를 많이 접하게 되었다. 최근까지 그것을 다룰 일이 없다가, 프로시저를 수정해야 할 요청이 들어와서 본격적으로 공부하고 글을 남긴다. SQL이 무엇인지, 쿼리는 무엇인지 등 DB에 관해 어느 정도 기초 지식이 갖춰진 상태로 읽는 것을 추천한다. 저장 프로시저(Stored Procedure)란? CREATE PROCEDURE procedure_name(IN parameter) BEGIN SQL1; SQL2; END; EXECUTE procedure_name(parameter); CALL procedure_name(parameter); 위 코드의 CREATE 부터 END 까지가 저장 프로시저를 구성하는 코드이고, 하단 부의 EXECUTE 혹은 CALL 문장으로 해당 프로..
문제는 여기에서 볼 수 있다. 읽어보면 굉장히 간단한 문제임을 알 수 있지만, 생각보다 빠르게 실행되는 코드를 작성하기 어렵다. 문제에서는 O(log n)으로 구현해보길 권장하고 있다. 내 풀이 O(log n) 보자마자, 'Two-Pointer 문제인가?' 생각이 들었다. 그래서 아래와 같이 구현해봤다. def searchRange(self, nums: List[int], target: int) -> List[int]: result = [-1, -1] if not nums: return result if len(nums) == 1: if target == nums[0]: return [0, 0] else: return result left , right = 0, len(nums) - 1 while left
지난 1편에 이은 2편의 글이다. 먼저 Monolithic System에 대해 좀 더 알아보고, MSA의 장단점, 오해 등에 알아보자. Monolithic System - 종류 앞선 1편의 글을 본 사람이면 대~강이라도 Monolithic 시스템이 어떤 것인지 알 것이다. 이러한 Monolithic 시스템은 여러 타입이 존재한다. Single Monolithic System 가장 일반적인 형태의 Monolithic System이다. 하나의 코드 베이스를 유지하기 때문에 '큰 진흙 공' 이라고도 불린다. Modular Monolithic System 각 기능별로 모듈화 되어 있는 형태이다. 그렇기 때문에 MSA의 좋은 대안이 될 수 있다. 아래에서 알아보겠지만, Monolithic의 가장 큰 문제는 "기능..
문제는 여기에서 볼 수 있다. 문제 설명 문제를 간략하게 설명하자면, 입력으로 들어오는 숫자 배열과 하나의 target 숫자가 있고 target 숫자가 배열 안에 존재하면 해당 target이 위치한 인덱스를, 존재하지 않으면 -1을 return 하는 문제이다. 단, 입력되는 숫자 배열에 몇 가지 조건이 있는데 1. 배열 안의 모든 숫자는 중복되지 않는다. 2. 배열 안의 모든 숫자는 오름차순이지만, 아래 3번의 규칙을 따른다. 3. 배열 안의 숫자들은 특정 숫자(pivot)를 기준으로 rotate 되었다. 예를 들면, [0, 1, 2, 3]이라는 배열은 0이라는 숫자를 기준으로 [2, 3, 0, 1]처럼 rotate 될 수 있고, 1이라는 숫자를 기준으로 [1, 2, 3, 0]처럼 rotate 될 수 있..
몇 주 전, 회사에서 MSA에 대한 교육을 들었다. 굉장히 흥미로운 내용이기도 했고, 최근 국내 기업들에서도 MSA 도입 사례가 많아지는 것 같아 공부한 내용을 정리할 겸 글을 남겨본다. 총 두 개의 글을 작성하였다. 2편 링크 What is MSA ? 용어 의미 일단 MSA라는 용어에 대해 알아보자. Microservice Architecture의 줄임말로, 해외에서는 Microservices라는 용어를 많이 사용한다고 하지만 여기서는 편의상 MSA로 통칭하겠다. 단어들의 뜻 그대로, 어떠한 Service를 만들 때 Micro 단위, 즉, 하나의 기능을 하는 서비스 단위로 쪼갠 구조를 뜻한다. 간단한 예를 들어, 하나의 상품을 선택하고 결제 후 배송까지 하는 쇼핑몰을 만든다고 해보자. 기존에는 상품 선..
· Study/ETC
취직 후 본격적인 개발자의 삶을 시작하며 처음 수행해본 첫 배포에 대한 후기 및 감상(?) 글이다. 몇 시간 뒤면 다시 출근해야 하지만, 첫 배포를 성공적(?)으로 마쳤다는 것에 기쁘고 들떠서 이 기분 그대로 글을 남겨본다. 어떤 프로그램을 배포? "라이브 커머스 개발 및 운영"이라는 채용 공고를 보고 지원 후 합격했지만, 내가 배치된 업무는 AI팩토리였다 ㅋㅋ; 이 이야기는 후에 하고.. 하여튼 윗 분들께서는 나에게 하나의 시스템을 운영시켜보며 현업(제조업)에 적응시키기로 하신 것 같다. 그 중 가장 최근에 개발된 웹 사이트 하나를 맡게 되었는데, 대략 8개국 정도에 흩어져 있는 공장들의 근로자 및 관리자 분들께서 이용하시는 데이터 관리 및 게시판 기능이 있는 사이트였다. 말 그대로 포탈. 사내 사이트..
대흉근
'Study' 카테고리의 글 목록 (7 Page)