본문 바로가기
728x90

츄Log/알고리즘 연습장43

연습#31 안녕하세요. 오늘은 문자열 rotate문제를 풀었습니다. 저는 그냥 열심히 반복문 돌려서 풀었는데요. 어떤 분은 엄청난 아이디어를 가져왔습니다. public boolean rotateString(String A, String B) { return A.length() == B.length() && (A + A).contains(B); } 미쳤다.. 어차피 rotate를 하게 되면 같은 문자열이 한번 더 붙는 형태가 되는데요, (ex. abcde를 rotate하면 abcdeabcde) 여기서 B가 포함되면 true인 것입니다. 혹시 당신은 천재..? 2024. 1. 5.
연습#30 하나 더 풀었습니다. 알고보니 과거에 풀었던 문제더라구요? 그래서 다른 방식으로 접근했습니다. class Solution { public int subtractProductAndSum(int n) { int sum = 0; int product = 1; while(n != 0) { sum += n%10; product *= n%10; n = n/10; } return product-sum; } } 2024. 1. 4.
연습#29 매우 EZ한 문제를 풀었습니다. 얏호!!! 쉬운 문제가 나와서 아주 좋네요~~~ 2024. 1. 4.
연습#28 하.. 트리.. 어렵다.. 난 바보인가.... 핀선생님 도움으로 풀었지만... ㅠ 고생했습니다. 2024. 1. 3.
연습#27 안녕하세요! 오늘도 한문제를 풀었습니다. greedy하게 풀면 그냥 끝나는 쉬운 문제였습니다. 다만 아쉬운건 저는 이상하게 포문을 두개 엮었네요 -_-; Arrays.sort(g); Arrays.sort(s); int i = 0; for(int j=0;i 2024. 1. 3.
연습#26 안녕하세요! 해피 크리스마스! 즐거운 연휴를 보내고 다시 일상 시작입니다. 1491. Average Salary Excluding the Minimum and Maximum Salary 너무 쉬웠습니다. (편안) 한가지 배운 점이 있습니다. 리턴하는 자료구조형으로 내부에서도 연산 하기 위 문제는 double을 리턴하므로, 소수점까지 처리가 필요합니다. 그러므로 내부 연산에서도 double형을 사용해야 합니다. 2023. 12. 26.
연습#25 하나 더 풀었습니다. 그냥 노동으로 풀었습니다. 그래서 runtime, memory모두 상위권이네요! (뒤에서 ㅠ) 2357. Make Array Zero by Subtracting Equal Amounts 다른 분들의 풀이를 보자마자 벽 느꼈습니다. Same elements, are always same -> Deduplicate Different elements, are always different until 0 -> Counts unique elements 1번은 이미 알고 있었는데 2번이 핵심인 것 같습니다. 예를들어 [4,5,6]이 있다고 할 때 단일 숫자는 자기 자신 말고는 다른 수를 0으로 만들 수 있는 가능성은 아예 없습니다. (Is there a possibility that a sin.. 2023. 12. 23.
연습#24 안녕하세요! 오늘도 문자열 조작 문제가 나왔습니다. 557. Reverse Words in a String III 저는 그냥 포문을 두번 돌려서 처리했습니다. 다른 분들의 풀이도 비슷하네요. 단어를 뒤집는데 StringBuilder를 썼냐, 아니면 손수 구현했나 차이만 있구요. 하나 더 풀어야지! 2023. 12. 23.
연습#23 1859. Sorting the Sentence 오늘은 문자열을 조작하는 문제를 풀었습니다. 그냥 배열 하나 만들어놓고, 해당 인덱스에 넣으면 됐는데(split -> insert -> join) 왜 저는 괜히 복잡하게 정렬을 했을까요 -_-; 알고리즘을 하다보면 간단하게 하는 방법을 아예 배제해버리는 것 같습니다. 그리고 String.join()을 사용하면 간단하게 이어붙일 수 있겠습니다. 분하다 분해.. 2023. 12. 22.
연습#22 안녕하세요. 오늘은 처음으로 트리 문제가 나왔고, 미루고 미뤄온 트리를 시작하게 됩니다. 다행히 개념만 알면 간단하게 풀 수 있는 문제여서 개념을 익히고 바로 문제를 풀었습니다. 144. Binary Tree Preorder Traversal 전위순회 문제였으며, 저는 DFS를 이용해서 풀었으며 많은 분들이 stack을 활용한 BFS로 풀었네요! class Solution { final List res = new ArrayList(); public List preorderTraversal(TreeNode root) { preorder(root); return res; } private void preorder(TreeNode root) { if (root != null) { res.add(root.val.. 2023. 12. 21.
연습#21 안녕하세요. 오늘도 Easy문제 하나를 풀었습니다. 876. Middle of the Linked List 링크드리스트 문제였는데, 음.. 그냥 링크드리스트가 무엇인지만 알면 풀 수 있는 문제라고 생각했으나, 다른 분들의 풀이를 보니 훨씬 빠르고 간결하게 푸는 방법이 있었습니다. 저는 전체 노드 개수를 구한 후 n/2까지 순회 후 반환하는 무식한 방법으로 접근했습니다. 다른 분의 굉장한 풀이는 다음과 같습니다. slow포인터와 fast포인터 두 개를 두고, slow는 하나씩 이동, fast는 두개씩 이동합니다. fast가 마지막 노드에 도달했을 때 (fast가 노드의 끝을 넘어버려서 null이거나 fast가 노드의 끝에 도달하여 fast.next가 null일 때) 그때 slow가 중간에 도달한 상태이므로.. 2023. 12. 21.
연습#20 안녕하세요. 연습#19에 이어서 바로 푼 문제가 12월 12일에 풀었던 문제였습니다. 소름돋는 점은 불과 일주일 전에 푼 건데 기억을 못한 것입니다ㅠㅠ 뭔가 지금 알고리즘 연습하는 과정이 적절하지 않은 것 같습니다. 알고리즘 연습 기록을 하면서 배운 것을 작성하고 있으니, 문제를 풀기 전에 한 번씩 그간 배운 것을 복습하는 과정을 넣어볼까 합니다. 일단 오늘 푼 문제는 다음과 같습니다. 387. First Unique Character in a String 이런 문제 보면 보통 배열로만 끝내시던데 저는 딱히 생각나는 방식이 없어서 Map을 통해서 쉽게 풀었습니다. 하지만 runtime과 memory사용량이 뒤에서 1~2등을 다투어서 적절한 방식은 아닌 것 같다는 생각을 했고, 배열로만 끝내는 방법을 꼭 .. 2023. 12. 20.
728x90