본문 바로가기

분류 전체보기154

BFS (Breadth First Search) 설명 BFS의 경우 DFS와 달리 재귀적으로 처리되지 않고 queue를 사용하여 탐색할 노드의 순서를 저장한다. 이번 포스팅에서는 BFS를 통해 어떻게 node를 탐색하는지에 대해 알아보도록 한다. Binary Tree 기반 BFS 기본적인 Binary Tree 형태로 넓이 우선으로 탐색하는 과정을 살펴보자. Tree는 좌측에 있는 그림과 같은 형태라고 하면, 우측의 화살표 순으로 탐색을 해야한다. 1. 먼저 탐색해야할 node queue에 root node를 추가한다. 2. 탐색해야할 node queue를 보고 node 탐색 iteration이 시작된다. 2.1) (왼쪽) queue를 pop하니 node1을 탐색해야하기 때문에 node1을 탐색한다. (오른쪽) 탐색한 뒤 node1과 연결된 node들(no.. 2024. 2. 13.
2차원 List 에서 distinct 처리하기 List에서 element를 distinct 처리하기 위해서 set()을 쓰곤 한다. 하지만 List를 element로 갖는 2차원 List에서 distinct 처리를 하기 위해 set()을 사용하는 경우 아래와 같이 TypeError가 난다. data = [ [1, 1], # duplicated [2, 2], # unique [1, 1], # duplicated ] set(data) # Exception has occurred: TypeError # unhashable type: 'list' List는 mutable 이기 때문에 hash를 지원하지 않기 때문에 List element를 tuple로 변환한 뒤 set()을 사용해야 한다. (참고: In Python, why is a tuple hashab.. 2024. 2. 12.
[Tips] 내가 쓰는 툴 (Mac) 업무를 하면서 개발 뿐만 아니라 여러 가지 작업을 하게 되는데 이 때의 효율성이 개발 생산성 못지 않게 중요하다. 이번 포스팅에서는 개발을 포함한 업무를 하면서 효율을 향상하기 위해 내가 어떤 툴을 쓰는지에 대해 정리해본다. Spectacle 애플리케이션을 여러 개 켜서 작업해야하는 경우 (e.g. 개발을 하면서 기획을 확인하기 위해 피그마, 노션, IDE을 같이 확인해야할 때) Mac의 경우 애플리케이션 창의 화면을 조작할 때 항상 마우스를 써야해야해서 매우 불편하다. Spectacle은 이러한 불편함을 해소시켜 주는 툴로 키보드만을 사용하여 애플리케이션 창의 크기와 위치를 변경할 수 있다. 다만 현재는 maintain 되고 있지 않으며 기존에 운영되던 사이트도 접속되지 않고 github reposit.. 2023. 12. 8.
[Github] 텍스트를 링크로 변경하기 - Autolink references Github에는 특정 텍스트에 대해 자동으로 링크를 연결해주는 Autolink references라는 기능이 있다. 기본적으로 commit hash나 #{PR number} 를 입력하면 자동으로 링크로 변경해준다. 하지만 기본적으로 제공되는 것 외에도 custom으로 추가할 수 있다. (나의 경우 주로 Jira 티켓 번호를 해당 티켓의 URL과 연결하는 용도로 사용한다) 그 방법은 아래와 같다. 1. Github repository의 Settings > Autolink references에 들어간다. 2. 생성하고자하는 autolink reference에 대한 규칙을 지정한다. 예시로 구글 검색을 할 수 있는 기능을 추가해보겠다. Target URL을 보면 확인할 수 있듯이 입력되는 텍스트는 이라는 변수.. 2023. 9. 10.
문제를 능동적으로 해결하려면 요즘 같이 일하는 1년차 개발자 분과 정기적으로 1on1을 하면서 회사 생활이나 개발에 대해서 여러 이야기를 나누게 되는데 그 중에 문제를 능동적으로 해결하는 방식에 대해 이야기를 한 적이 있다. 개인적으로 능동적으로 무언가를 해결하기 위해서는 문제 의식과 목적 의식이 분명해야한다고 생각한다. 이 두 가지가 명확해야지 흔히 말하는 동기부여가 명확해지고 문제에 깊게 몰두할 수 있다고 본다. 내가 생각하는 문제 해결에 대한 문제 의식과 목적 의식은 문제 의식 어떠한 일이나 상황에 대해 내가 문제 상황임을 인지하는 것이다. (예를 들어, 동일한 기능에 대해서 지속적으로 VoC가 들어오는 경우 이 기능에 대한 UI를 변경하거나 유저 가이드를 만드는게 좋겠다고 생각하는 것이다) 문제 의식을 느끼지 못하면 내가 왜.. 2023. 8. 26.
코드리뷰에 대하여 ver.2 사내 테크톡에서 발표한 내용을 블로그에 정리하여 올립니다. (이전 코드리뷰 포스팅에서 내용을 몇가지 보강하였습니다) 들어가기에 앞서 얘기하고자하는 내용은 정답이 아니라 세미나, 블로그와 같은 여러 외부 정보와 개인적인 경험과 여러 토대로 빚어진 의견과 관점이고, 팀마다 상황이 다르고 조직마다 지향하는 바가 다르기에 상황에 맞게 적절한 전략으로 코드리뷰를 진행하는 것이 좋다고 생각합니다 :) "너는 이거 다 잘 따르고있냐?"면 아니지만 적어도 모르고 안 행하기보다는 알지만 못 행하는게 낫다는 생각에 이번 발표를 준비하였습니다. 왜 코드리뷰를 하는걸까? 피쳐 쳐내느라고 바빠 죽겠는데 왜 코드리뷰를 하는걸까요? 코드 품질 코드의 성능, 가독성을 증가시키기 위해서 팀 코드 스타일의 일관성 유지시키기 위해서 버그.. 2023. 8. 20.