본문 바로가기

알고리즘, 문제해결/알고리즘, 자료구조21

[Java] Java에서 사용하는 여러 자료구조 정리 제가 주로 코딩 테스트를 C++로 응시하다 보니 C++의 문법에 상당히 익숙해져 있는 상태입니다. Spring Boot 등의 프레임워크를 이용하는 경우 Java를 쓰게 되는데, 동일한 자료구조를 사용해도 문법이 약간 달라 헷갈리는 경우가 자주 있어 한번 정리해 보고자 만들었습니다. 자료구조 자체에 대한 설명을 하고자 하는 글이 아닌, C++에서 쓰던 자료구조를 Java에서 동일하게 사용하기 쉽도록 정리한 글입니다. 접은글 형식으로 작성하였으니 원하는 부분을 찾기 편리하실 겁니다. Java에서는 데이터 타입에 대해 첫 글자가 대문자로 표기되는 점을 주의하면 됩니다. 1. Stack 더보기 Stack은 C++와 크게 차이나지 않습니다. import java.util.Stack;//대문자 주의 Stack s1.. 2021. 10. 18.
느리게 갱신되는 세그먼트 트리 세그먼트 트리에 대한 글을 먼저 읽고 와 주시기 바랍니다. 앞서 주어진 배열 arr에 대해, 특정 구간의 합을 O(log N)의 시간 복잡도로 구할 수 있는 알고리즘인 segment tree에 대해 알아보았습니다. 주어진 배열 arr에 대해 미리 구간을 나누어 합을 구한 세그먼트 트리 tree를 만들고, 질의가 들어온 구간에 대해 대표 노드를 선별하여 그 값을 참조하는 방식입니다. 세그먼트 트리는 생성에 O(N log N), 구간 합 구하기에 O(log N), 특정 인덱스의 값 수정에 O(log N)의 시간 복잡도를 가집니다. 그렇다면 다음과 같은 경우를 생각해 봅시다. "특정 구간의 값"을 변경하는 경우가 존재할 수 있습니다. 배열 arr에 대해 구간 [1, 3]의 값에 3씩 더하고, [2, 4]의 구.. 2021. 9. 26.
세그먼트 트리 다음과 같은 문제를 생각해 봅시다. 배열 arr에는 수많은 int형 정수가 들어 있다. arr의 크기 n은 최대 10만이며, 각 정수는 1000 이하의 크기를 가진다. 배열이므로, 당연히 arr의 모든 원소는 인덱스가 정해져 있다. 인덱스는 0부터 시작한다. 총 m줄에 걸쳐 구간이 주어질 때, 주어진 구간합을 출력하는 코드를 작성하시오. (n 2021. 9. 25.
C++의 auto에 대해 C++에 익숙하다고는 하지만, 맨날 알고리즘 문제풀이만 하던 저에게 최근에 새롭게 알게 된 키워드가 있습니다. auto 키워드인데, C++11 이후에 추가되었다고 합니다. 제가 가장 흔하게 본 상황은 아래와 같은 경우입니다. vector numbers; for (auto next : numbers) { cout 2021. 8. 31.
[SQL] String, Date 프로그래머스 링크: programmers.co.kr/learn/courses/30/parts/17047 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코딩 테스트의 SQL 문제를 대비하기 위해 공부하며 정리한 글입니다. 1. 루시와 엘라 찾기 programmers.co.kr/learn/courses/30/lessons/59046 코딩테스트 연습 - 루시와 엘라 찾기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME.. 2021. 3. 11.
[SQL] JOIN 프로그래머스 링크: programmers.co.kr/learn/courses/30/parts/17046 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코딩 테스트의 SQL 문제를 대비하기 위해 공부하며 정리한 글입니다. JOIN과 관련된 내용이 코딩 테스트 대비 시에 제일 중요한 부분 같습니다. 1. 없어진 기록 찾기 programmers.co.kr/learn/courses/30/parts/17046 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 .. 2021. 3. 11.