전체 글42 네이버 부스트캠프 8기 1차 2차 코딩 테스트 합격 후기 작년만 해도 네이버 부스트캠프의 존재를 알게 되었을 때 내가 이 프로그램을 신청하게 될 줄은 몰랐다. 이렇게 취업이 길어질 줄도 몰랐고 취업 그냥 어떻게든 되겠지? 혹은 그냥 아무 생각이 없었을지도 모른다. 자신감도 많이 없고 네이버라는 이름에 겁부터 먹었는지도 모른다. 저기 들어가는 사람들은 열심히 살아오고 잘하는 사람들이겠지.. 이런 하남자 같은 생각만 하고 있었는데 당시 같이 게임을 하고 있던 친구한테 말했더니 일단 모르니까 그냥 해봐, 되면 좋은 거고 아니면 마는 거잖아라는 말에 그 말대로 그냥 해볼까? 가 시작이었다. 지원서 작성 지원서에 작성하는 질문의 답변에는 솔직하면서도 잘 읽히도록 작성했는데 한번 작성하고 며칠 후에 다시 보면서 어색한 점이나 요점에서 벗어난 말들이 보이면 다시 수정을 하.. 2023. 7. 5. Blind 75 | Validate Binary Search Tree (Trees 7 / 11) 알고리즘 두 가지 풀이가 있는데 현재 노드가 left보다 크고 right보다 작은지 확인하는 것과 직접 left로 가서 left의 val이 내려 가기 전의 노드보다 작은지 확인하는 방법이 있다. 두 번째 방법으로 풀이를 해볼건데 중요한 점은 지금까지 봐왔던 값들중 최소 값 최대 값을 변수로 따로 지정하여 비교해가며 검사해야한다. 구현 구현을 하다 막히고서 BST의 정의를 복습하게 해준 좋은 문제다. 2023. 6. 28. Blind 75 | Binary Tree Level Order Traversal (Trees 6 / 11) 알고리즘 bfs의 응용문제로 queue에 추가할 때 레벨도 같이 추가하여 각 레벨마다 해당하는 노드를 저장하여 리턴한다. 코드 2023. 6. 26. Blind 75 | Lowest Common Ancestor of a Binary Search Tree (Trees 5 / 11) 알고리즘 BST인 문제일 때에는 값을 비교하며 left로 갈지 rgiht으로 갈지 생각하면 된다 첫 예시의 경우 만약 p = 0, q = 4라 가정하면 둘 다 6보다 작기에 left로 간다 p = 7, q = 9라 가정하면 둘 다 6보다 크기에 right으로 간다. 만약 둘다 작거나 크지 않다면 그 사이에 있다는 뜻이므로 그대로 리턴한다. 예시 2에서와 같이 root이 2라 p라서 같은 경우도 컨디션에서 안 걸리기 때문에 그대로 리턴될 수 있도록 구현한다. 구현 2023. 6. 22. Blind 75 | Remove Nth Node From End of List (Linked List 5 / 6) 알고리즘 브루트포스 연결 리스트의 처음부터 끝까지 한번 순회해서 길이를 구하고 그 길이를 이용해서 Nth 노드를 없앤다. 구현은 쉽지만 리스트의 길이가 1이거나 2이거나 등의 엣지 케이스가 괴롭힌다. 더미 노드 슬라이딩 윈도우와 비슷한 기법으로 엣지 케이스들을 없앨 수 있다. 1. Dummy 노드를 생성한 후 root에 연결한다. 2. left, right 포인터를 만들고 right은 root, left는 Dummy 노드를 가리킨다. 3. right은 n만큼 오른쪽으로 이동한다. 4. 그 후 right 포인터가 null일 때까지 이동시키는데 이때 left 포인터도 같이 한 칸씩 이동한다. 5. right 포인터가 null일 때 left는 삭제해야 할 노드의 바로 전 노드를 가리키고 있는다. 그 노드의 n.. 2023. 6. 22. Blind 75 | Reorder List (Linked List 4 / 6) 연결리스트 뒷부분에서 시작되는 노드들을 앞에서부터 번갈아가며 연결하는 문제로 노드의 val을 임의로 수정하면 안 되고 어떠한 리턴도 하지 않는 함수를 작성해야 한다. 뒷부분에서 거꾸로 연결해 야하기 때문에 reverse linked list를 풀 수 있어야 이 문제를 풀 수 있다. 알고리즘 1. slow fast 포인터를 이용하여 노드의 중간 지점을 찾는다. 2. 중간 지점의 다음 노드부터 시작하여 연결 리스트를 거꾸로 연결한다. 3. 두 연결 리스트를 교차하며 연결한다. 구현 중간 지점을 찾는 첫번째 부분에서는 종이에 그림을 적어 그려 구현하면 더 쉽다. 두 번째 반을 거꾸로 만드는 작업에서 제일 중요한 부분은 두 번째 반 연결 리스트가 시작되기 직전의 노드의 next를 null로 만들어 한 개의 연결.. 2023. 6. 21. Blind 75 | Subtree of Another Tree (Trees 4 / 11) Same Tree 문제의 다음 버전으로 root 안에 subRoot과 동일한 트리가 있는지 확인하는 문제다. bfs를 이용한 풀이 재귀를 이용한 풀이 2023. 6. 21. Blind 75 | Same Tree (Trees 3 / 11) 풀이 두 개의 트리가 완전히 동일한 트리인가 확인하는 문제다. 재귀를 이용하며 베이스 케이스로는 3개를 둔다. 15줄 = p는 있는데 q가 null일 경우, p가 null인데 q는 있는 경우 같은 트리가 아니므로 false 16줄 = p와 q 둘 다 null 일 경우 같은 트리이므로 return 17줄 = p와 q의 값이 다른 경우 false를 리턴 위의 모든 조건이 클리어되면 p와 q의 값이 같은 것임으로 true를 리턴하고 동시에 AND operator와 함께 left, right에 함수를 호출해 주면 깔끔하게 풀 수 있다. 훨씬 쉬운 풀이는 정답인 것만 체크하고 나머지 컨디션들이 걸리면 false로 리턴한다. p나 q가 undefined여서 런타임 오류가 날 것을 대비해 p && q 를 넣어 먼저 .. 2023. 6. 20. Blind 75 | Maximum Depth of Binary Tree (Trees 2 / 11) 풀이 재귀를 이용해서 쉽게 풀 수 있다. 베이스 케이스는 노드가 null 일 때를 가정하고 0을 리턴한다. 한번 재귀를 할때마다 1씩 더 추가돼서 리턴되며 왼쪽 오른쪽 노드에 재귀로 함수를 호출하고 그중 높은 값을 받으면 된다. 2023. 6. 20. 혼자 공부하는 컴퓨터구조 + 운영체제 6월 초에 사서 보름정도 걸려서 완독 했다 하루에 0.5 ~ 1 챕터씩 읽었는데 컴퓨터구조와 운영체제에 대한 지식들을 넓고 얕게 가르쳐주며 꼭 알아야 하는 기본 상식 같은 개념이나 단어들은 강조를 해가며 가르쳐준다. 솔직히 웹 개발할 건데 운영체제 같은 거 알아서 뭐 하지.. 하는 막연한 생각이 있었긴 했다. 1 챕터 두 번째 장에 써진 작가의 말이 인상 깊다. 저 그림을 보고 생각난 상황이 있는데 예전에 내 컴퓨터를 직접 조립하기 전에는 처음부터 만들어진 노트북이나 삼성이나 LG 같은 브랜드에서 나오는 컴퓨터 같은 완제품으로 샀었었다. 그럴 때 컴퓨터의 어느 부분이 잘못돼서 고장이 나도 뭐가 문제인지 알 수가 없었고 매번 업자에게 맡겨 돈도 뜯기고.. 어릴 때는 멀쩡했던 그래픽카드를 수리하는 아저씨가 .. 2023. 6. 20. Blind 75 | Invert Binary Tree (Trees 1 / 11) 풀이 재귀를 이용한 풀이와 bfs iterative 풀이가 있다. 둘 다 베이스 케이스를 잘 고려하는 게 관건이다. 딱히 해설이 필요 없는 풀이로 왼쪽 오른쪽을 바꿔주기만 하면 된다! 2023. 6. 20. Blind 75 | Linked List Cycle (Linked List 3 / 6) https://leetcode.com/problems/linked-list-cycle/ Linked List Cycle - LeetCode Can you solve this real interview question? Linked List Cycle - Given head, the head of a linked list, determine if the linked list has a cycle in it. There is a cycle in a linked list if there is some node in the list that can be reached again by continuo leetcode.com Linked List Cycle 풀이 연결 리스트의 사이클을 체크하는 문제로 제일 간단한 .. 2023. 6. 20. 이전 1 2 3 4 다음