Study

문제는 여기서 볼 수 있다. 특별한 알고리즘 기법이 필요한 문제는 아니다. 내 풀이 바로 코드 먼저 보자. class Solution: def merge(self, intervals: List[List[int]]) -> List[List[int]]: if len(intervals) == 1: return intervals result = [] intervals.sort(key = lambda x: x[0]) leftIdx, rightIdx = 0, 1 tempElement = intervals[leftIdx] while rightIdx < len(intervals): if tempElement[1] < intervals[rightIdx][0]: result.append(tempElement) leftId..
· Study/ETC
신입, 경력 채용 공고의 지원 자격을 보면 100이면 100, 협업과 커뮤니케이션 능력 항목이 꼭 있다. 취준생 때, 그런 항목을 보며 '사회적으로 고립되어 있지 않고, 사람들과 대화 잘 나누는 정도면 되는 건가?', '대학교 조별 과제도 별 사고 없이 해냈는데, 자격 충분한 거 아닌가 ㅋㅋ' 같은 생각을 했었다. 인턴 생활과 정직원 생활을 1년 조금 넘게 지내보며 그러한 생각들은 빙산의 일각의 일각의 일각임을 느끼고 있다. 위와 같은 생각들이 틀리다는 것은 아니다. 다만, 일상적인 생활에서는 접할 수 없는 여러 사람들과 얽힌 복잡한 상황을 고려해 보아야 한다. 예를 들어, SI 기업에 다니며 고객사 시스템을 운영 중인 나에게 고객사로부터 신규 기능 추가 건이 요청되었다고 가정하자. 그럼 먼저 고객사가 ..
· Study/ETC
현재 몸 담고 있는 SI 업 특성 상, 협력사 개발자 분들과 같이 일하며 개발적인 부분에서 많은 도움과 배움을 받는다. 그 중에서도 6년 차 시니어 개발자 분이 계신데, 정말 신중하고 꼼꼼한 개발 스타일을 갖고 계셔서 이분께 이것저것 여쭤 볼 때마다 정말 많이 배운다. 그 때문에 이분의 영향을 크게 받았는지, 누군가 개발에서 가장 중요한 요소 하나를 꼽으라고 한다면 "꼼꼼함"일 것 같다. 예를 들어, 어떠한 화면에서 신규 기능을 추가할 함수를 찾을 때 러프하게 프로그램 로직과 함수 명만 보고 결정하는 것이 아니라, 실제로 화면 로딩에서 해당 함수를 타는 것이 맞는지 꼭 확인을 거치는 습관을 들여야 안전하다는 말씀을 해주셨다. 또한 내가 수정 및 추가한 코드로 인해 발생 가능한 사이드 이펙트를 철저하게 조..
· Study/ETC
업무를 하며 기존에 작성된 쿼리 문들을 보면, 간혹 WHERE 절 뒤에 '1=1'이라는 녀석이 붙은 것을 볼 수 있었다. 어떤 의미인지, 또 언제 사용하는지 궁금하여 알아보았던 내용을 작성한다. WHERE 절? 이 글을 찾아온 것 자체가 WHERE 절이 무엇인지 알고 있을 것이라 생각한다. '어디'라는 WHERE의 의미처럼, 내가 DB로부터 가져오고 싶은 데이터의 '조건'을 걸어주는 부분이다. 가정 이 글의 목적이었던 '1=1'의 의미를 얼른 알아보기 전, 아래와 같은 간단한 쿼리 문이 있다고 가정하자. SELECT TOP 100 * FROM GYM_USER WHERE SQUAT >= '160' AND BENCHPRESS >= '80' AND DEADLIFT >= '180' GYM_USER라는 테이블로부..
거의 모든 DBMS는 인덱스 종류에 대해 특별한 언급이 없다면, B-Tree 계열 인덱스를 사용하는 경우가 대다수이다. 많고 많은 자료구조에서 왜 하필 B-Tree, B+-Tree를 사용하는지에 대해 알아본다. 이 글을 읽기 전에 이전 글을 읽고 오면 좋으며, 아래 사이트들의 내용을 토대로 작성했다. [Naver D2] 성능 향상을 위한 SQL 작성법 [Tistory] 데이터베이스 인덱스는 왜 'B-Tree'를 선택하였는가 [Tistory] 인덱스(index)란? [Tistory] B-Tree(B트리), B+트리 Tree란? 이 글을 찾아왔다는 것 자체가 Tree에 대한 개념은 이미 알고 있을 것이라 생각하고, 먼저 시간 복잡도에 대해 생각해보자. 일반적으로 위의 그림처럼 평균적으로 생긴 Tree에서 탐..
가끔 DB 배포 프로세스를 진행하다 보면 이 배포가 DCL인지 DDL인지 DMl인지 알아야 할 때가 있다. 아직 완벽하게 숙지를 못해서 정확하게 알아둘 겸 글로 남겨둔다. DCL(Data Control Language, 데이터 제어어) Control이라는 단어 뜻에 맞게 데이터를 제어하는 언어다. 데이터의 보안 / 무결성 / 회복 / 병행 수행 제어 등을 정의하는데 사용한다. 종류는 아래 네 가지가 있다. GRANT 특정 DB 사용자에게 특정 작업에 대한 수행 권한 부여 REVOKE 특정 DB 사용자에게 특정 작업데 대한 수행 권한 박탈 및 회수 COMMIT 트랜잭션 작업을 데이터에 적용 ROLLBACK 트랜잭션의 작업 취소 및 원래 데이터로 복구 DDL(Data Definition Language, 데..
Index(이하 인덱스)는 DB를 다루다 보면 필연적으로 듣는 단어이다. 본격적으로 글에 들어가기 전에 인덱스에 대해 간단하게 설명하자면, DB 데이터 조회 성능 향상을 위해 사용한다. 대용량 데이터를 담고 있는 DB 테이블에서 우리에게 필요한 데이터를 빨리 찾으려면 이 '인덱스'라는 녀석의 도움이 필요하다. 인덱스가 아예 없거나 적절한 인덱스를 찾지 못하면, 어마무시한 데이터가 담겨있는 테이블 전체를 읽어야 하기 때문에 데이터 조회 시간이 오래 걸릴 것이다. 이 인덱스에 대해 앞으로의 글들을 통해 보다 자세히 알아보자. 본 글들은 아래 글들의 내용을 토대로 작성했다. [Wiki] 인덱스 (데이터베이스) [Naver D2] 성능 향상을 위한 SQL 작성법 [Tistory] 인덱스(index)란? DB 성..
· Study/Java
이 글을 작성하기 위해 지난 한 달 동안 Garbage Collection(이하 GC)에 대해 자세히 공부해보았다. 이번 글에서는 Java에서 사용하는 Generational GC에 대해 알아보며, Naver D2 블로그의 Java Garbage Collection 글과 Java HotSpot VM G1GC 글을 토대로 작성했다. 계속해서 글을 읽기 전에 아래 네 글을 읽고 오는 것이 좋다. [Garbage Collection] (1) 개념, 유래, 한계, GC에 대해 알아야 하는 이유 [Garbage Collection] (2) GC 알고리즘 - Reference Counting Algorithm(참조 횟수 카운팅) [Garbage Collection] (3) GC 알고리즘 - Tracing Garba..
지난 3편에 이어, Garbage Collection(이하 GC, 가비지 컬렉션)의 알고리즘 중 Tracing GC(추적 기반)에 대해 계속 알아본다. 다시 말하지만 Tracing GC에서는 아래 알고리즘들에 대해 작성할 예정이며, 지금까지 세 개의 알고리즘에 대해 알아보았다. - Mark-Sweep Algorithm - Mark-Sweep-Compact Algorithm - Tri-color Marking Algorithm (Incremental GC) - Copying Algorithm (Incremental GC) - Generational Algorithm (Incremental GC) 이번 글에서는 앞서 살펴보았던 Mark-Sweep Algorithm의 문제인 Fragmentation(단편화) ..
대흉근
'Study' 카테고리의 글 목록 (4 Page)