일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 17825
- 괄호 변환
- 찾아라 프로그래밍 마에스터
- 17779
- 문자열을 정수로 바꾸기
- 게리맨더링 2
- 2019 카카오 공채
- programmers
- 카카오 2020 공채
- 자바
- 프로그래머스
- 투포인터
- 12906
- java
- 큰 수 만들기
- 자연수 뒤집어 배열로 만들기
- 124 나라의 숫자
- 단체사진 찍기
- 주사위 윷놀이
- 2018 카카오 공채
- 백준
- Brainf**k 인터프리터
- 짝지어 제거하기
- 라면공장
- 후보키
- 가장 큰 정사각형 찾기
- 카카오2020 공채
- 3954
- 시저암호
- 정수 내림차순으로 배치하기
- Today
- Total
목록분류 전체보기 (103)
기기
Map 이터페이스를 구현한 구현체 중 하나 키와 값을 저장하는 자료구조 키와 값은 모두 객체다. int, char 와 같은 기본형은 들어올 수 없다. 값은 중복 저장 불가하여 저장하면 새로운 값으로 대체된다. 해싱을 사용하기에 데이터 검색에 뛰어난 성능을 가진다. 시간 복잡도 multi thread 환경에서는 사용하면 의도치않게 잘못된 값을 사용하게 되는 큰 문제 발생 대신 ConcurrentHashMap 사용해야한다. Hashmap의 key는 hash function을 거쳐 고유한 bucket index 생성하여 빠른 저장, 검색이 가능 중복된 index 가 생기는 것을 Hash 충돌이라 부른다. 충돌이 발생하면 내부적으로 entry간에 chaining 방식으로 해결하게 된다. (Java 8) 실제 값..
이진 탐색 정렬되어 있는 데이터를 두 부분으로 나누며 값을 탐색하는 알고리즘 비슷하게 분할하는 알고리즘으로 분할정복이 있다. 하지만 분할정복은 문제를 부분적으로 해결하는 알고리즘으로 탐색이 목적이 아니다. 이진탐색은 '수가 존재하는지' 빠르게 알아낼 수 있다. 단 중복원소가 있을 때 가장 왼쪽의 원소의 위치를 반환하는 방법과, 가장 오른쪽 원소의 위치를 반환하는 방법이 있다. 기본적인 메커니즘 탐색 범위 내[low ~ high]의 배열의 중간 인덱스[(low + high)/2]를 구한다. 중간 인덱스 값과 key 값을 비교한다. (key는 탐색하고자 하는 값) key 값이 중간 값보다 작다면 왼쪽 부분을, key 값이 중간 보다 크다면 오른쪽 부분을 탐색한다. 이 과정을 반복하며 key 값이 있을 수 있..
https://www.acmicpc.net/problem/2003 풀이 이중루프로 i, j 탐색을 하면 N이 10^5이기 때문에 시간초과에 걸린다. 그래서 누적합 또는 투포인터로 풀면 통과할 수 있다. 1) 누적합 (prefix sum) 누적합으로 풀 수는 있는데 N이 더 컸더라면 누적합으로는 풀 수 없다. long[] pre = new long[N+1]; st = new StringTokenizer(br.readLine()); for(int i = 1 ; i
1. 전원 ON 컴퓨터의 전원을 켜면 메인보드에 전력이 들어온다. (Power ON) 메인보드에 장착된 장치들(CPU, 메모리, 디스크 등)에도 전력 공급 2. ROM에 저장된 BIOS(Basic Input Output System) 펌웨어 실행 ROM(Read Only Memory)에 저장된 BIOS(Basic Input/Output System)를 읽어들여 실행 ROM(Read Only Memory) 이란 주기억장치(메모리)에는 ROM, RAM 두 종류 존재 ROM은 말 그대로 Read-Only Memory이기 때문에 오직 읽기만 가능 ROM에 저장된 데이터들은 비휘발성이기 때문에 전원 공급이 끊겨도 저장된 데이터들이 사라지지 않음 그렇기 떄문에 전원이 없어도 항상 저장되어야 하는 데이터가 저장 BI..
토이프로젝트에서 데이터의 생성날짜, 수정날짜 컬럼을 추가하던 중 시간 데이터 타입으로 어떤걸 쓸지 고민하다 간단히 정리 날짜와 시간을 표현하는 타입 MySQL에서는 날짜와 시간을 표현하는 데 여러 가지 타입을 제공 DATE: YYYY-MM-DD 형식으로 날짜만 표현, datetime에서 date만 뽑아낸 것 (Extract the date part of a date or datetime expression) DATETIME: YYYY-MM-DD HH:MM:SS 형식으로 날짜와 시간을 표현 TIMESTAMP: YYYY-MM-DD HH:MM:SS 형식으로 날짜와 시간을 표현하며, 자동으로 값이 업데이트 TIME: HH:MM:SS 형식으로 시간만 표현 YEAR: YYYY 형식으로 년도만 표현 날짜와 시간에 관..
annotation이란 주석이라는 뜻으로, 코드에 다른 프로그램을 위한 미리 약속된 형식으로 포함 즉 다른 프로그램을 위한 메타 데이터 프로그래밍 언어에 영향이 없다. 다른 프로그램에 유용한 정보를 제공한다. 자바 5부터 제공 annotation 예시 - @Override @Override는 컴파일러에게 부모 클래스의 메서드를 오버라이드 했다는 것을 알려준다. 그렇기 때문에 실행 전 오류를 알 수 있다. 또한 코드에서 명시적으로 상속 메서드가 무엇인지 쉽게 파악할 수 있다. public class Parent { public int calculate(int a, int b) { return a + b; } } public class Child extends Parent { @Override public ..
auto increment을 처음봤을 때 이름 그대로 키 값을 알아서 자동으로 올려주는 기능으로만 생각했다. 그런데 막상 사용하려니 동시 요청에 대해 auto increment는 어떻게 대처하는지 원리를 이해못했다. 여기저기 찾아보니 알아둬야 할 내용들이라 생각하여 정리한다 AUTO INCREMENT란 AUTO_INCREMENT 속성을 사용하여 새로운 행에 unique ID 생성 중복되지 않기 때문에 PK에 AUTO_INCREMENT를 많이 설정한다. CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ); INSERT INTO animals (name) VALUES ('d..
결론 MySQL 8.0 부터 INFORMATION_SCHEMA의 변경 정보는 24시간에 1번 반영된다. 상황 mysql AUTO_INCREMENT 관련 문서에서 sql문을 테스트하던 중 INFORMATION_SCHEMA의 auto_increment 값이 바뀌지 않았다. ALTER TABLE '테이블A' AUTO_INCREMENT = 1; 위와 같이 변경 후 INFORMATION_SCHEMA에서 조회해보니 AUTO_INCREMENT값이 변경되지 않았다. 하지만 '테이블A'에 값을 넣으면 변경된 auto_increment 값이 들어가는 것을 확인할 수 있었다. 이유는 INFORMATION_SCHEMA의 업데이트 속도는 24시간에 1번 반영된다는 것을 알게 되었다. 왜 INFORMATION_SCHEMA 데이터..