분류 전체보기 258

[leetcode] 27. Remove Element

Description 정수로 이루어진 nums 배열과 특정 값 val 이 매개변수로 주어졌을때 배열 안에 val 과 동일한 값이 있으면 해당 배열에서 제거한 후 배열안에 유효한 값이 몇개인지를 출력하는 문제 Input: nums = [3,2,2,3], val = 3 Output: 2, nums = [2,2,_,_] Input: nums = [0,1,2,2,3,0,4,2], val = 2 Output: 5, nums = [0,1,4,0,3,_,_,_] Success cnt와 i 라는 두 개의 변수를 두어 nums[i] 의 값이 val 과 같지 않으면 cnt 가 가르키는 인덱스로 값을 채워 나간다. 그렇게 값을 채워나가다 보면 cnt 에는 val 의 값에 해당되지 않는 유효한 값들만 존재하게되고 cnt 는 ..

알고리즘 2021.11.09

[leetcode] 88. Merge Sorted Array

Description nums1 배열과 해당 배열에 유효한 값이 몇개인지를 나타내는 수 m nums2 배열과 해당 배열에 유효한 값이 몇개인지를 나타내는 수 n 위 값들이 매개변수로 들어왔을때 새로운 배열 생성없이 두 배열을 하나의 배열로 합친 후 내림차순으로 정렬하라. Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 Output: [1,2,2,3,5,6] Input: nums1 = [1], m = 1, nums2 = [], n = 0 Output: [1] Input: nums1 = [0], m = 0, nums2 = [1], n = 1 Output: [1] Success m 부터 m+n 까지 반복문을 돌려 nums1 배열의 끝 지점에 nums2..

알고리즘 2021.11.08

[leetcode] 1089. Duplicate Zeros

Description 정수 배열이 주어졌을 때 0이 발생할 때마다 0을 하나 더 생성하고 나머지 요소를 오른쪽으로 이동한다. 이 때 새로운 배열을 생성하지 않고 기존 배열에서 값 수정이 일어나야 한다. Input: arr = [1,0,2,3,0,4,5,0] Output: [1,0,0,2,3,0,0,4] Input: arr = [1,2,3] Output: [1,2,3] Success 인덱스의 값이 0 이면, 뒤에서 두번째 인덱스부터 뒤로 한칸씩 보낸 후 0 이 나온 인덱스 앞에 값을 0 으로 수정해준다. class Solution { public void duplicateZeros(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { if (arr[i] == ..

알고리즘 2021.11.07

[leetcode] 977. Squares of a Sorted Array

Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com [Success] 내림차순으로 정렬된 정수 배열이 주어졌을 때, 내림차순으로 정렬된 각 인덱스 값의 제곱 구하는 문제 [풀이] 각 인덱스의 값의 제곱을 구한 후 해당 인덱스에 다시 할당시킨다. 제곱의 값으로 다 채워진 후에는 해당 배열을 내림차순으로 정렬. class Solution { public int..

알고리즘 2021.11.06

[leetcode] Find Numbers with Even Number of Digits

Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com [Success] 정수 배열이 주어졌을 때, 자릿수가 짝수인 값은 몇개인지 반환하는 문제 [풀이] Math.log10 라는 함수를 이용하여 정수 값의 자릿수를 알아 낸 후 자릿수가 짝수인지 확인하여 짝수라면 카운트 값을 증가시킨 후 반환한다. class Solution { public static int ..

알고리즘 2021.11.06

[leetcode] 485. Max Consecutive Ones

Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com [Success] 이진수로 구성된 배열이 주어졌을 때, 연속되는 1의 값의 최대 수를 구하는 문제 풀이 배열길이 만큼 돌면서 특정 인덱스 값이 1 이면, count 값을 증가시키고 count 가 최대 값으로 설정될 때마다 maxCount 에 할당해준 후 최종적으로 maxCount 를 return 시킨다. ..

알고리즘 2021.11.06

XML & JSON & YAML

XML & JSON & YAML 모두 데이터를 표현하는 형식이다. 표와 같은 구조를 가진 정보를 한 줄로 보내기 위해선 정보를 주는 쪽과 받는 쪽에 합의된 형식이 있어야 한다. XML (Extensible Markup Language) 내용 홍길동 95 Soccer Ninza 이순신 100 Sing Dancing HTML 과 흡사한 구조를 가지며 태그로 표현된다. 트리계층 구조이며 루트요소부터 시작해 여러 개의 자식을 계층적으로 포함한다. 주석을 넣을 수 있다. 문법적인 오류가 발생해도 각각 태그로 구분되어 있어 다른 태그들은 태그가 읽을 수 있다. 안정성을 요구하는 곳에 XML 태그를 이용하여 XML 문서임을 명시할 수 있고 아래 속성을 추가할 수 있다. version: XML 문서의 버전 encodi..

Web 2021.10.30

그래프(Graph) 설명과 DFS, BFS 구현

그래프 란 그래프는 노드와 그 노드를 연결하는 간선을 하나로 모아 놓은 것 그래프에는 방향성이 있을수도 있고 없을수도 있다. 트리는 그래프의 한 종류이다. 모든 그래프가 트리는 아니다. 트리는 사이클이 없는 하나의 연결 그래프 그래프는 여러 개의 고립된 부분 그래프로 구성될 수 있다. 모든 점점 쌍간에 경로가 존재하는 그래프는 '연결 그래프' 라고 부른다. 그래프에는 사이클이 존재할 수도 있고 존재하지 않을 수도 있다. 그래프를 시각적으로 그려보면 아래와 같다. 그래프를 표현하는 방법 1) 인접행렬 2차원 배열에 표현하는 방법 그래프를 표에다 표현하는 방법 서로 연결된 노드들은 1로 표현하고 연결이 없으면 0으로 2차원 배열방을 채우는 방법이다. 2) 인접리스트 배열에 노드들을 나열하고 관계를 연결 리스..

자료구조 2021.10.30

트리(Tree) 설명과 구현

트리(Tree) 란? 하나의 루트 노드를 갖고, 0개 이상의 자식노드로 이루어져 있는 구조. 자식노드 또한 0개 이상의 자식노드를 가질 수 있다. 트리(Tree) 종류 이진트리 각 노드가 최대 2개의 자식 노드를 갖는 트리 이진탐색트리 모든 노드가 특정 순서를 따르는 속성이 있는 이진트리를 일컫는다. "모든 왼쪽 자식들 ≤ n < 모든 오른쪽 자식들" 모든 노드 n 은 해당 조건을 반드시 충족해야한다. 바로 아래 자식 뿐만아니라 내 밑에있는 모든 노드가 충족되어야 한다. 모든 노드에 대해서 그 왼쪽 자식들의 값이 현재 노드 값보다 작거나 같도록 하고, 오른쪽 자식들의 값은 현재 노드의 값보다 반드시 커야 한다. 완전 이진 트리 트리의 모든 높이에서 노드가 꽉 차 있는 이진 트리 마지막 단계는 꽉 차 있지..

자료구조 2021.10.30

[데브원영]아파치 카프카 for beginners 정리

아파치 카프카는 대용량, 대규모 메세지 데이터를 빠르게 처리하도록 개발된 메시징 플랫폼이다. 큐 역할을 하며, 고가용성으로 서버가 이슈가 생기거나 갑작스러운 전원이 내려가는 상황에서도 데이터를 손실없이 복구할 수 있다. 기존 문제점 기존 링크드인의 데이터 처리 시스템은 각 파이프라인이 파편화되고 시스템 복잡도가 높아 새로운 시스템을 확장하기 어려운 상황이였음 기존 메시징 큐 시스템인 ActiveMQ를 사용했지만, 링크드인의 수많은 트래픽과 데이터를 처리하기에는 한계가 있었음 결론적으로 배포와 장애대응, 유지보수의 어려움이 있었다. 이로 인해 새로운 시스템의 개발 필요성이 높아졌고, 링크드인의 몇몇 개발자가 다음과 같은 목표를 가지고 새로운 시스템을 개발 프로듀서와 컨슈머의 분리 메시징 시스템과 같이 영구..

Kafka 2021.10.24