전체 글77 [LeetCode] Valid Palindrome - (Kotlin) https://leetcode.com/problems/valid-palindrome 주어진 문자열에서 숫자와 알파벳만 남겨 문자열을 뒤집어도 같은지 확인하는 문제이다 (펠린드롬). 처음에는 반복문을 통해 풀었지만, 정규식을 이용하니 코드가 훨씬 간결해졌다. 기존 코드 fun isPalindrome(ss: String): Boolean { val s = ss.uppercase().trim() var l = 0 var r = s.lastIndex while (l 0 && !isAlphanumeric(c2)) { c2 = s[--r] } if (isAlphanumeric(c1) && isAlphanumeric(c2) && c1 != c2) { return false } l++ r-- } return true .. 2023. 1. 16. [LeetCode] Convert Sorted Array to Binary Search Tree (Kotlin) https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree Convert Sorted Array to Binary Search Tree - LeetCode Convert Sorted Array to Binary Search Tree - Given an integer array nums where the elements are sorted in ascending order, convert it to a height-balanced binary search tree. Example 1: [https://assets.leetcode.com/uploads/2021/02/18/btree1.jpg] Input: leetcode.com 오름차순 .. 2023. 1. 15. [LeetCode] Symmetric Tree (Kotlin) https://leetcode.com/problems/symmetric-tree fun isSymmetric(root: TreeNode?): Boolean { if (root == null) { return true } return isEqual(root.left, root.right) } fun isEqual(left: TreeNode?, right: TreeNode?): Boolean { if (left == null && right == null) { return true } if (left == null || right == null) { return false } if (left.`val` != right.`val`) { return false } return isEqual(left.left, .. 2023. 1. 14. [LeetCode] Merge Sorted Array (Kotlin) https://leetcode.com/problems/merge-sorted-array Merge Sorted Array - LeetCode Merge Sorted Array - You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively. Merge nums1 and nums2 into a single array sorted in non-de leetcode.com fun merge(nums1: IntArray, m: Int, nums2: IntArra.. 2023. 1. 14. [모던 자바 인 액션] 15장 - CompletableFuture와 리액티브 프로그래밍 컨셉의 기초 CompletableFuture와 리액티브 프로그래밍 컨셉의 기초 동시성을 구현하는 자바 지원의 진화 처음 Runnable, Thread를 동기화된 클래스와 메서드를 이용해 잠갔다. Java5 ExecutorService 인터페이스, Callable, Future Java7 분할 정복, 포크/조인을 지원하는 java.util.concurrent.RecursiveTask Java8 스트림, 람다에 기반한 병렬 프로세싱 Java9 분산 비동기 프로그래밍을 명시적으로 지원 발행-구독 프로토콜(Flow API) Executor와 스레드 풀 자바5는 Executor 프레임워크와 스레드 풀을 통해 스레드의 성능을 고도화 함. 스레드의 문제 스레드를 만들고 종료하는 비용은 비싸다. 따라서 기존 스레드가 실행되는 상태.. 2022. 12. 30. 프로세스와 스레드 프로세스와 스레드 프로세스 PCB(Process Controll Block)를 사용하여 OS가 프로세스를 관리한다. 특징 메모리에 적재되어 실행되는 프로그램의 인스턴스 운영체제로부터 시스템 자원을 할당받는 작업의 단위 프로세스는 각각 독립된 메모리 영역을 할당받는다. 각 프로세스는 최소 하나의 스레드를 가진다. 각 프로세스는 별도의 주소공간을 가지며, 프로세스는 다른 프로세스의 공간에 접근할 수 없다. 구조 Stack 임시 데이터 저장 (함수 호출, 지역변수 등) 함수를 호출할 수록 커지며 힙 메모리와 인접한 방향으로 커진다. 스택 포인터와 힙 포인터가 만나면 메모리가 소진되었다는 의미다. Heap 코드에서 동적으로 만들어지는 데이터 저장 Data 전역 변수, static 변수 등 Code 프로그램을 실.. 2022. 12. 30. Redis 기본 Redis란? 정의 Remote Dictionary Server Storage: 데이터 저장소 (데이터) Database: 전통적인 DBMS (영속성) Middleware: 어플리케이션이 Redis를 이용한다. In-memory DB 데이터를 디스크가 아닌 RAM에 저장한다. 빠른 속도. 빠른 속도와 휘발성의 트레이드 오프를 고려해야 한다. 캐싱, 세션 등 Key-Value 저장소 Java의 Map 과 같은 형식 Hash를 이용하기 때문에 빠르다. 범위 검색 불가. Redis 자료구조 String 바이트 배열 저장 (바이너리로 변환할 수 있는 모든 데이터를 저장 가능) 최대 크기는 512MB 127.0.0.1:6379> SET HELLO WORLD OK 127.0.0.1:6379> GET HELLO "W.. 2022. 12. 25. Easy Random을 이용한 객체 생성 Easy Random 테스트를 위해 Dummy 객체를 만들 때 굉장히 번거롭다. 그 때 도움을 받을 수 있는 Easy Random 라이브러리를 알게 되어 소개하려고 한다. public class Member { private final Long id; private final String username; private final String email; private final LocalDate birthDate; private final LocalDateTime createdAt; public Member(Long id, String username, String email, LocalDate birthDate, LocalDateTime createdAt) { this.id = id; this.use.. 2022. 12. 22. [Programers] 카드 짝 맞추기 (Kotlin) https://school.programmers.co.kr/learn/courses/30/lessons/72415 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 BFS + 순열을 이용한 문제였다. 중요한 점은 BFS 로직을 작성할 때 도착 시 한 칸 이동 Ctrl + 이동 세 부분을 나누어서 생각해야 하는 점이다. 2차원 배열을 Deep Copy 할 때 board.clone() 을 해서 오류가 발생했다. clone() 메서드를 2차원 배열에 사용하면 배열 내부의 요소는 Deep Copy 되지 않는다는 점을 조심하자. import java.util.L.. 2022. 12. 8. 이전 1 2 3 4 5 6 ··· 9 다음