전체 글 164

[leetcode] 443. String Compression

문제 최초 풀이 -> 각 알파벳, 알파벳 개수 정보를 하나의 문자열에 모은 후 char[]에 다시 할당참고 풀이 - > 링크알파벳 개수를 groupLength으로 파악한 후 곧바로 char[]에 할당, 이게 끝날때까지 반복최초 풀이(2ms)class Solution { public int compress(char[] chars) { StringBuilder sb = new StringBuilder(); int cnt = 1; // 어떤 알파벳이 몇 개 있는지 sb에 구한다. for(int i = 1; i 1) { sb.append(cnt); } brea..

코딩테스트 2024.06.11

메시지 큐

메시지 큐는 시스템 간의 결합도를 낮출 수 있는데 시스템끼리 서로의 애플리케이션에 대한 정보가 없어도 비동기적으로 데이터를 교환할 수 있기 때문이다.따라서 시스템을 분리하는데 유리하고 확장성, 신뢰성을 높일 수 있기 때문에 분산 시스템 환경에서 메시지 큐를 사용하는 일이 많다. 메시지 큐의 종류에는 RabbitMQ, Kafka, Redis Sub/Pub 이 있는데 분산 시스템 환경, 애플리케이션의 종류, 데이터에 따라 선택하는 것이 좋다. RabbitMQ는 AMQP(Advanced Message Queue Protocol)로써 다양한 데이터 패턴, 여러 라우팅이 가능해야할 때 사용해야 한다.Kafka는 LinkedIn에서 제공하며 대규모 데이터 처리 시에 유용하게 사용된다. 이벤트 처리, 대규모 데이터 ..

카테고리 없음 2024.06.10

배열 & 리스트 & ArrayList, LinkedList

배열과 리스트는 아주 잘 사용되는 자료 구조 중 하나로 데이터의 집합을 저장하기 위한 구조이다. 배열배열은 메모리 상에 연속적인 공간에 저장되며 최초로 할당받은 저장공간을 사용한다.동일한 타입의 데이터를 연속적인 공간에 저장하기 때문에 인덱스를 이용해서 데이터가 저장된 공간으로 빠르게 이동할 수 있다.메모리 상에 연속적인 공간에 할당되어 있기 때문에 배열의 크기를 변경하는 것은 불가능하다.따라서 배열의 크기를 변경하고 싶을 때는 아예 크기가 큰 새로운 배열을 선언해야 한다. 크기가 큰 배열을 선언하고 싶을 때 메모리에 충분한 공간이 없다면 메모리 할당에 제약이 발생한다.  즉, 배열은 메모리 상 연속적인 공간에 저장되며 인덱스를 통한 접근이 가능하기 때문에 빠르게 접근 가능하며 간단하게 구현할 수 있다는..

카테고리 없음 2024.06.09

[leetcode] 724. Find Pivot Index

문제 최초 풀이(5ms)class Solution { public int pivotIndex(int[] nums) { int result = -1; int sum = Arrays.stream(nums).sum(); int presum = 0; for(int i = 0; i   참고 후 최종 풀이(1ms) 스트림을 사용하면 코드가 간결해지고, 가독성이 높아지는 건 맞는데 ms 단위로 시간을 줄이고자 할 때는 적절하지 않은 듯.. presum * 2 가 전체 합에서 nums[i]를 뺀 값, presum += nums[i++]로 반복 표현하기 등을 배움..세상 똑똑이들 참 많다 많어..class Solution { public int pivotInd..

코딩테스트 2024.06.09