분류 전체보기 (124) 썸네일형 리스트형 [c++] LeetCode 104. Maximum Depth of Binary Tree 재귀 함수로 left와 right의 maxDepth + 1의 max값을 구해주면 된다. class Solution { public: int maxDepth(TreeNode *root) { if (root == nullptr) { return 0; } return max(maxDepth(root->left) + 1, maxDepth(root->right) + 1); } }; [c++] leetcode, 102. Binary Tree Level Order Traversal Tree의 같은 level의 노드들의 value를 묶어서 출력하는 문제이다. 같은 level은 search하는 방법인 BFS이므로, queue를 이용하여 문제를 풀어준다. class Solution { public: vector levelOrder(TreeNode *root) { vector answer; queue q; if (root != nullptr) { q.push({root, 0}); } int curIdx = -1; while (!q.empty()) { pair top = q.front(); q.pop(); if (curIdx < top.second) { curIdx++; vector a; answer.push_back(a); } answer[top.second].push_back(top.f.. [c++] leetcode 101. Symmetric Tree 왼쪽 child와 오른쪽 child가 서로 대칭인지 확인하는 문제이다. 대칭을 확인하는 코드를 구현하는 것이 다소 복잡할 것이라고 생각해서, 오른쪽 child를 대칭시키고, 대칭시킨 오른쪽 child가 왼쪽 child와 동일한지 확인하는 코드를 작성하였다. convert는 어떤 TreeNode를 대칭시키는 함수이다. isSameTreeNode는 어떤 두 TreeNode가 같은지 다른지 확인하는 함수이다. class Solution { public: void convert(TreeNode *root) { if (root == nullptr) return; TreeNode *tmp = root->left; root->left = root->right; root->right = tmp; convert(root.. [c++] LeetCode 84번 Largest Rectangle in Histogram stack에 (height, index) 를 쌍으로 저장해준다. heights를 순회하면서 stack의 top 보다 현재 height가 크다면 stack에 push해서 넣어준다. 만약 stack의 top보다 현재 height가 작다면 이 height 보다 작은 top이 나올 때 까지 pop을 해주고, pop을 하면서 height와 index로 직사각형의 너비를 계산해준다. top.height * ( i - top.index ) 가 직사각형의 너비가 되고 answer에 max를 취해서 큰 값만 가져간다. 현재 height보다 작은 top을 만났을 때, 다시 push를 해줘야하는데, 이때의 index는 현재 index가 아니라 마지막에 pop한 top의 index가 되어야한다. 왜냐하면 마지막에 pop한 t.. [c++] LeetCode 79번 Word Search backtracking을 이용해서 푸는 문제이다. 좌우상하 네가지 방향으로 이동할 수 있고, 한번 방문한 cell은 다시 방문하지 않는다. word의 시작점은 m*n grid의 어느곳이든 될 수 있으므로, 이중 for 문을 이용해서 탐색을 시도해야한다. find 라는 method를 정의해서 문제를 해결하였다. 현재까지 matching된 word의 index를 curDepth로 전달시켜준다. 그리고 좌우상하 네 방향을 탐색하고 curDepth를 하나 증가시켜 find를 재귀적으로 호출해준다. 이미 방문했던 곳은 다시 방문하면 안되므로, visted 라는 unordered map을 사용해서 관리를 중복 방문이 일어나지 않도록 관리를 하였다. #include #include #include #include #.. 일본 입국 준비물 - 2022년 10월 일본 입국시에 준비할 것 2022년 10월 11일부터 일본에 무비자로 입국이 가능하게 되었습니다. 그런데 아직 코로나가 완전히 종료된 상황이 아니기에 필요한 준비물이 있습니다. 1. 백신 3차 접종 증명서 백신 3차 접종자의 경우에는 정부 24에서 코로나 19 예방접종 증명서를 영문으로 발급 받아 준비해야합니다. 코로나 19 예방 접종 증명서 발급 링크 : https://www.gov.kr/mw/AA020InfoCappView.do?HighCtgCD=A05004&CappBizCD=14600000398&tp_seq=99 예방접종증명서를 발급받을 때, 꼭 영문으로 선택하셔야합니다. 위에는 예방접종증명서를 발급 받았을 때 나오는 증명서 샘플입니다. 저의 경우에는 한국에서 티켓팅을 할 때, 항공사 직원이 한번 .. [c++] 41. First Missing Positive Set을 이용하면 쉽게 풀 수 있지만, 문제에서는 constant space만 사용하라고 되어있다. n에 의해서 크기가 변화되는, 즉 Set과 같은 자료구조를 이용해서 positive number 의 유무를 판별할 수 없다는 뜻이다. 문제에서 Missing Positive Number를 찾으라고 했으므로, 음수는 우리의 관심사밖이다. 그래서 해당 인덱스의 부호를 음으로 바꿔주는 것으로, 추가적인 space의 할당없이 숫자의 존재여부를 저장할 수 있다. class Solution { public: int firstMissingPositive(vector &nums) { int n = nums.size(); for (int i = 0; i < n; i++) { if (nums[i] n) { nums[i] =.. try-with-resource close를 통해서 직접 닫아줘야되는 resource를 사용하는 경우 try-with-resource를 사용해서 자동으로 close를 시켜줄 수 있다. 자원들은 AutoCloseable interface를 구현해야한다. 아래와 같이 여러개의 자원을 사용하는 코드를 작성할 수 있다. 이 때는 자원을 생성한 순서의 역순으로 close를 해준다. public class Main { public static void main(String[] args) throws Exception { try (TestResource testResource = new TestResource("1"); TestResource testResource2 = new TestResource("2")) { System.out.println.. 이전 1 2 3 4 5 6 7 ··· 16 다음