[LeetCode] 94. Binary Tree Inorder Traversal (Easy)

문제로 정답 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 구현을 못해서 힌트 받고 품 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> result = new ArrayList(); inOrder(result, root); return result; } public void inOrder(List<Integer> list, TreeNode node){ if(node == null) return; inOrder(list, node.left); list.add(node.val); inOrder(list, node.right); } } 참고 1. 전위 순회 (Pre-order Traversal) 전위 순회에서는 각 노드를 방문하는 순서가 루트-왼쪽-오른쪽입니다. 즉, 먼저 루트를 방문하고, 그 다음에 왼쪽 서브트리를 방문한 후, 오른쪽 서브트리를 방문합니다. ...

June 23, 2024 · 김태영

[LeetCode] 88. Merge Sorted Array (Easy)

문제로 정답 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int i = m - 1; int j = n - 1; int k = m + n - 1; while(i >= 0 && j >= 0) { if(nums1[i] > nums2[j]) { nums1[k--] = nums1[i--]; } else { nums1[k--] = nums2[j--]; } } while(j >= 0) { nums1[k--] = nums2[j--]; } } }

June 21, 2024 · 김태영

[LeetCode] 83. Remove Duplicates from Sorted List (Easy)

문제로 정답 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode deleteDuplicates(ListNode head) { if(head == null ){ return head; } ListNode cur = head; while(cur != null && cur.next != null) { if(cur.val == cur.next.val) { cur.next = cur.next.next; } else { cur = cur.next; } } return head; } }

June 20, 2024 · 김태영

[LeetCode] 70. Climbing Stairs (Easy)

문제로 내가 푼 것 상상도 못함 정답 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Solution { public int climbStairs(int n) { if (n == 1) { return 1; } else if (n == 2) { return 2; } int prev1 = 1, prev2 = 2; for (int i = 3; i <= n; i++) { int current = prev1 + prev2; prev1 = prev2; prev2 = current; } return prev2; } } 참고 피보나치 수열을 이용하면 간단히 풀 수 있어서 Easy인가보다 ...

June 19, 2024 · 김태영

추모

layout: post title: 추모 #image: path: /assets/img/blog/jeremy-bishop@0,5x.jpg description: > sitemap: false 직접 분향소에 찾아가지 못해 미안합니다. 삼가 고인의 명복을 빕니다.

June 19, 2024 · 김태영

[LeetCode] 69. Sqrt(x) (Easy)

문제로 내가 푼 것 상상도 못함 정답 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class Solution { public int mySqrt(int x) { if (x == 0) { return 0; } int left = 1, right = x; while (left <= right) { int mid = left + (right - left) / 2; if (mid == x / mid) { return mid; } else if (mid < x / mid) { left = mid + 1; } else { right = mid - 1; } } return right; } } 참고 초기 조건: 입력 값이 0일 경우, 제곱근은 0이므로 바로 반환합니다. 이진 탐색: left는 1로, right는 x로 초기화합니다. le- ft가 right보다 작거나 같을 때까지 반복합니다. 중간값 mid를 left + (right - left) / 2로 계산합니다. mid * mid가 x와 같으면 mid를 반환합니다. mid의 제곱이 x보다 작으면 left를 mid + 1로 증가시킵니다. 그렇지 않으면 right를 mid - 1로 감소시킵니다. 반환 값: 반복이 종료된 후 right를 반환합니다. 이 값이 x의 제곱근을 내림한 값입니다.

June 18, 2024 · 김태영

알리바바

layout: post title: 알리바바 #image: path: /assets/img/blog/jeremy-bishop@0,5x.jpg description: > sitemap: false 5월말경 알리바바가 전 축구선수 David Beckham과 전속 계약을 맺었다고 한다. 전 세계적으로 아마존같은 포지션을 원하는지 공격적인 마케팅을 하는 것 같다. 덕분에 16인치 모니터를 값싸게 샀다. ...

June 18, 2024 · 김태영

[LeetCode] 67. Add Binary (Easy)

문제로 내가 푼 것 틀림 정답 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 class Solution { public String addBinary(String a, String b) { StringBuilder result = new StringBuilder(); int i = a.length() - 1; int j = b.length() - 1; int carry = 0; while (i >= 0 || j >= 0) { int digitA = (i >= 0) ? a.charAt(i) - '0' : 0; int digitB = (j >= 0) ? b.charAt(j) - '0' : 0; int sum = digitA + digitB + carry; result.append(sum % 2); carry = sum / 2; i--; j--; } if (carry != 0) { result.append(carry); } return result.reverse().toString(); } } 참고 1 2 int digitA = (i >= 0) ? a.charAt(i) - '0' : 0; int digitB = (j >= 0) ? b.charAt(j) - '0' : 0; a.charAt(i)와 b.charAt(j)는 char 타입의 값을 반환합니다. 이는 문자열의 특정 위치에 있는 문자입니다. ‘0’는 또한 char 타입입니다. 하지만, 자바에서 char 타입은 실제로는 정수 값(유니코드 값)을 가지며, ‘0’의 유니코드 값은 48입니다. 따라서, a.charAt(i) - ‘0’는 char 타입 값에서 char 타입 값 ‘0’을 빼는 연산을 수행합니다. 이 때, 자바는 자동으로 char 타입을 int 타입으로 변환하여 빼기 연산을 수행합니다. 예를 들어, a.charAt(i)가 ‘1’이면, 이는 유니코드 값 49를 가집니다. 따라서 49 - 48은 1이 되어, 결국 digitA는 1이 됩니다. 결과적으로, a.charAt(i) - ‘0’는 문자 ‘0’에서 ‘9’ 사이의 문자를 해당하는 정수 값 0에서 9로 변환합니다. 이는 자동 형변환을 통해 이루어집니다. 1 2 result.append(sum % 2); carry = sum / 2; sum은 int 타입이며, 2는 리터럴 정수 타입입니다. % 연산자와 / 연산자는 int 타입끼리의 연산을 수행하며, 결과도 int 타입입니다. 이 과정에서 특별한 형변환은 일어나지 않지만, 연산의 결과가 int 타입으로 유지됩니다.

June 17, 2024 · 김태영

[LeetCode] 66. Plus One (Easy)

문제로 내가 푼 것1(틀림_) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Solution { public int[] plusOne(int[] digits) { StringBuffer s = new StringBuffer(); for(int n : digits){ s.append(n); } long nums = Long.parseLong(s.toString()) + 1l; int length = String.valueOf(nums).length(); int[] result = new int[length]; for(int i = length-1; i >= 0; i--){ result[i] = (int) nums % 10; nums = nums/10; } return result; } } 내가 푼 것2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Solution { public int[] plusOne(int[] digits) { for(int i = digits.length-1; i >= 0 ; i--) { if(digits[i] + 1 <= 9){ digits[i] += 1; return digits; } else { digits[i] = 0; } } int[] result = new int[digits.length + 1]; result[0] = 1; return result; } }

June 16, 2024 · 김태영

자격증

layout: post title: 자격증 #image: path: /assets/img/blog/jeremy-bishop@0,5x.jpg description: > sitemap: false sqld 시험에 응시했다. 시간이라는 한정된 자원을 최대한 활용하기 위해 목표가 필요했다. 자격증이 내 삶을 대단케하지는 않지만 목표를 이뤄나가는 과정이 단단한 뿌리가 되리라 믿는다. ...

June 15, 2024 · 김태영