전체 글 688

[minimum height trees] 리트코드 310 그래프 알고리즘

그래프알고리즘 - minium height trees리트코드 310번 minimum height trees, 그래프 알고리즘 문제트리가 주어질 때 최소자식래밸을 가지는 루트노드를 모드 찾는다.ex1)위와 같은 트리에서, 최소 자식레벨(2)을 가지는 루트노드는 1 ex2)위와 같은 트리에선, 최소 자식래밸을(2)를 가지는 루트노드는 3,4. 나머지 노드가 루트노드가 되면 래밸 3이상을 가지게 된다. 풀이이 문제의 핵심은 leaf노드들 부터 하나씩 없애 주는 것이다.그렇다면 리프노드는 어떻게 알 수 있는가?바로 모든 노드들에 대해서 연결된 노드의 개수를 저장하는 리스트(indegree)를 만들고, 연결된 노드가 1이 leaf노드가 된다.이렇게 하나씩 없애주다가 마지막으로 삭제되는 ..

알고리즘/graph 2024.04.26

[leetcode] 685. Redundant Connection II

문제해석리트코드 685번 문제.rooted tree를 만들기위해 어떤 edge를 제거해야 하는가? (입력값은 항상 rooted tree에서 간선하나가 더 추가된 상태로 들어옴. 만약 제거할 수 있는 edge가 여러개 있다면 입력으로 늦게들어온 edge를 제거함)* rooted tree ? : 루트노드를 제외한 모든 노드가 하나의 부모만을 가지는 트리 생각의 오류처음엔 단순히 유향그래프의 사이클 발견즉시 해당 edge를 정답으로 찾는 알고리즘을 생각했다. 하지만 해당 방법으로는 아래와 같이 사이클이 없는 그래프에서 정답을 찾지 못한다(실제로는 1->3 or 2->3 edge중 나중에 들어온 edge를 찾아야 한다)따라서 이 문제는 문제의 조건을 이용하여 문제를 새롭게 정의해서 알고리즘을 ..

알고리즘/graph 2024.04.23

[java] int의 오버플로우, long 형 변환

int의 범위 자바에서 인트의범위는 -2147483647 ~ 2147483647 이다. 그 이상의 값이 들어가면 에러가 발생하거나 쓰레기값이 나온다. int a = 1233235*2351; System.out.println(a); 결과값 : -1395631811 long 형변환 숫자뒤에 L을 붙이면 형변환이 되고 long타입으로 받을 수 있다. long a = 1233235L*2351L; System.out.println(a); 결과값 : 2899335485 L을 하나에만 해도 된다. long a = 1233235*2351L; System.out.println(a); 결과값 : 2899335485 나누기를 할 경우 곱셈되는 숫자에 L을 붙여줘야지, 나눗셈에 붙이면 또 터진다. long a = 1233..

[SQL] 연속된 년도 구하기

연속된 년도 구하기 DB에 다음과 같은 데이터가 있다고 가정했을 때, 연속된 년도(혹은 어떤 숫자든)가 얼마나 있는지 확인하는 쿼리 ex ) [인원별 수상내역]테이블이 아래와 같을때 2년이상 연속으로 수상한 사람을 구하시오 수상년도 성명 2014 A 2013 A 2016 B 2020 B 2020 C 2021 C 2019 C => A(2013, 2014 2년연속 수상), B(2019, 2020, 2021 3년 연속 수상)를 출력해야 한다. 방법 핵심 아이디어는 "년도를 오름차순으로 정리하고 순서대로 인덱스를 매기는것" 그 후 현재년도(혹은 수상년도 컬럼에서 가장 max값)에서 수상년도값을 뺀값과 index를 더하는것 1. 수상년도와 이름을 오름차순으로 정렬 수상년도 성명 2013 A 2014 A 2016 ..

DB/SQL 2024.02.26

[패스트캠퍼스] 한 번에 끝내는 데이터 엔지니어링 초격차 패키지 Online. 수강후기

패스트캠퍼스 올해 중순부터 '한 번에 끝내는 데이터 엔지니어링 초격차 패키지 Online.'를 수강하고 있습니다. 현재까지 프로그래밍 관련 공부를 하면서 패스트캠퍼스를 많이 이용했습니다. '한 번에 끝내는 데이터 엔지니어링 초격차 패키지 Online.'는 제가 패스트캠퍼스에서 수강한 10번째 강의입니다. 프로그래밍 공부를 하며 특정 분야를 공부할때는 모르는것이 있으면 구글링을 하며 새로운 것들을 배워나갔습니다. 하지만 새로운 분야에 전체적인 틀을 잡고 개념을 이해하기 위해선 실무경험을 할 기회가 없다면, 강의가 가장 큰 도움이 되었습니다. 그 중 패스트캠퍼스의 강의들은 IT현직자들이 본인들이 현업에서 경험한것들을 체계적인 커리큘럼을 통해서 만든 것이므로 개념을 잡고 현업을 경험하기에도 좋았습니다. 또한 ..

카테고리 없음 2023.12.11

암호화 방법

암호화 리스트 정리 양방향 암호화 1. 대칭키 : 암호화키와 복호화 키가 같은 것. - 스트림기반 : 비트단위 암호화 방식 - 블록기반 : 블록단위 암호화 방식. 문자열 단어 하나하나를 블록으로 나누어서 암호화 2. 비대칭키 : 암호화키와 복호화 키가 다름 - ECC(Elliptic Curve Cryptography) : 타원곡선 암호화. 비트코인에 사용 - RSA : 소인수분해 - DH 단방향 암호화 - Hash를 이용

트랜잭션 격리수준(isolation level)

트랜잭션 격리수준 발생에러 \ 트렌잭션 격리수준 Dirty Read Non-Repeatable read Pantom Read 격리수준 낮음 . . . . . 격리수준 높음 READ UNCOMMITED 발생 가능 발생 가능 발생 가능 READ COMMITED 없음 발생 가능 발생 가능 REPEATABLE READ 없음 없음 발생 가능 SERIALIZABLE 없음 없음 없음 READ UNCOMMITED 가장 낮은 격리수준으로서 커밋되지 않은 데이터를 볼 수 있음. 따라서 dirty read오류 발생 READ COMMITED 커밋된 데이터만 읽는것. 다른 A 트랜잭션에서 변경한 데이터를 읽을 때 B 트랜잭션에서 일관되게 읽지 않을 수 있음. 즉 unrepeatable read가 발생할 수 있음. 오라클의 ..

DB/[이론] 2023.11.19

데이터 무결성

데이터 무결성이란 - 데이터 무효갱신으로 부터 데이터를 보호하여 정확성, 유효성, 일관성, 안정성 등을 유지하는것 무결성의 종류 * 개체무결성 : 기본키로 선택된 필드는 빈 값을 허용하지 않음 * 참조 무결성 : 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관되어야 함 - 외래키는 Null이거나 참조하는 테이블의 기본키에 존재하는 값이여야 함 - 기본키 중 자신을 참조하는 외래키가 존재하면 기본키를 삭제할 수 없다. * NULL 무결성 : not null인 컬럼의 경우 not null이 지켜져야 함 * 영역 무결성(Domain Integrity) : 테이블에 존재하는 필드의 무결성을 보장하는것. 데이터타입, NULL 허용 등의 여부 정의. 속성값은 원자성을 가지며, 해당 도메인에서 정의된 값이여야..

DB/[이론] 2023.11.13

메모리 단편화

내부단편화 주 기억장치에서 가용한 공간에 프로세스를 할당하고 남은 영역이 생기는 것 외부단편화 주 기억장치에서 가용한 공간의 합은 프로세스의 크기보다 크지만, 나누어져 있어서 프로세스를 올릴 수 없는 경우. 해결방법 1. 압축 : 주기억장치 내 분산되어 있는 공간을 압축하여 큰 공간 하나를 만드는것 2. 페이징기법 : 프로세스를 "페이지"로 나누고, 주기억 장치를 "프레임"으로 나누어 프로그램을 실행시 페이지 단위로 프레임에 옮기는 기법

CS/운영체제 2023.11.13

데이터베이스의 구성요소

데이터베이스의 구성요소 1. 데이터베이스 관리시스템 : 데이터베이스를 구축하고 이용하는 기능을 제공하는 시스템 소프트웨어 2. 데이터베이스(DB) : 한 조직의 여러 응용프로그램이 공용하기 위해 최소의 중복으로 저장한 데이터의 집합 3. 데이터베이스 언어 : 사람과 시스템의 인터페이스를 제공하는 도구 4. 사용자 : 데이터베이스 관리자(DBA), 데이터베이스 응용 프로그래머, 데이터 베이스 사용자 등

DB/[이론] 2023.10.15

로드벨런서(loadbalancer)의 정의 및 종류

로드벨런서란 특정 서비스에서 어떤 작업을 컴퓨팅 리소스 단위로 분산해서 처리하는 것. 부하가 한 곳에서 처리할 수 있는 용량을 넘으면, 처리를 못하거나 처리가 기대보다 낮아지기 때문에 이것을 방지하기위해서 부하를 분산시키는 것. 로드벨런서 종류 1. round-robin 순서대로 돌아가면서 서버를 하나씩 할당 하는 것. 2. IP hashing 같은 IP의 요청을 같은 서버에 연결하므로써 cache를 최대한으로 활용하여 속도를 최대한 높히는 것. 이때 아래와 같이 단순히 IP의 범위로 할당할 서버를 나누면, 특정 IP의 접속이 몰렸을 때 한 서버에 과부하가 걸릴 수 있다. ip 서버 1~5 1 5~10 2 10~15 3 15~20 4 따라서 해싱을 통해 랜덤하게 ip를 서버로 할당한다. (하지만 이 ..

백엔드 2023.09.17

DNS서버

DNS란 Domain Name Service의 약자로서, 컴퓨터가 인식할 수 있는 IP주소와 사람이 기억하기 쉬운 도메인이름을 서로 치환해주는 서비스. DNS의 네가지 서버 1. DNS recursor 클라이언트로 부터 요청을 받는 서버. 이미 처리한 적이 있는 주소의 경우 캐시를 통해 빠르게 응답 2. Root nameserver 요청받은 host이름의 TLD서버의 위치를 알려준다 (.com .net 최상위 확장자 서버의 dns위치를 알려준다) * .com이 top 래밸인 이유? 맨뒤 도메인이름(.com .net .kr 등)의 개수는 많지 않지만 앞에 도메인이름은 무수히 많다. 따라서 시작부터 적은수의 분기를 타기위해 뒤에서부터 계층적으로 도메인이름은 구성되어 있다. 3. TLD server 요청받은..

CS/네트워크 2023.09.10

스크럼

스크럼이란? - 프로젝트 관리를 위한 에자일 방법론 - 3가지 산출물, 3가지 미팅이 있음 - 15분의 제한된 시간 동안 서로의 문제점을 투명하게 공유하고 커뮤니케이션하며, 정형화된 틀이 아닌 개개인의 경험을 중시하여 유동적으로 프로젝트 방향을 이끌어나가는 것을 인정한다. 3가지 산출물 1. 제품 백로그 : 제품에 담고자 하는 "기능"들을 정리한 목록. 제품 책임자가 우선순위 결정. 2. 스프린트 백로그 : 스프린트 동안 개발할 "과업"을 정리한 목록. 3. 소멸차트 : 개발을 왈료하기까지 남은 작업량을 보여주는 그래프 3가지 미팅 1. 일일 스크럼 : 매일 진행하는 15분간의 프로젝트 진행상황 공유 회의. 각자가 한 일, 문제점 등을 이야기 함. 2. 스프린트 계획 : 스프린트에 대한 목표를 세우고백..

redis 명령어

MAP - GET SET 함수 명령 설명 SET mykey "myvalue" key: mykey, value:myvalue 값을 가지는 객체 SET mykey "myvalue" EX 10 10s뒤에 삭제 SET mykey "myvalue" PX 10 10ms뒤에 삭제 SET mykey "myvalue" XX 키가 존재하면 SET을 실행 SET mykey "myvalue" GET 이전에 있던 value값을 return한후 SET을 실행 SET mykey "myvalue" NX SETNX mykey "myvalue" 키가 존재하지 않으면 SET을 실행 MSET key1 val1 key2 val2 ... 여러값을 SET MGET key1 key2 여러값을 GET - counter command 명령 설명 I..

DB/[이론] 2023.07.12

mac redis 설치 및 실행

redis란 cacheDB의 한 종류로서 다양한 자료구조를 제공하는 in memory database이다. 싱글스레드라는 특징이 있고 하나의 한 클라이언트만 자료를 저장/조회하기 때문에 데이터 lock없이 빠르게 데이터를 조회가능하다. cacheDB로 redis를 많이 사용하는 이유는 자료구조의 설계와 사례가 용도에 따라 명확하기 때문이다. 또한 분산 클러스터 모드를 지원하므로 확장성도 제공할 수 있고 레퍼런스가 충분히 많다. redis설치 및 실행 1. brew를 이용한 redis설치 brew install redis 2. redis 실행 redis-server //일반실행 brew services start redis //백그라운드실행 3. 실행됐는지 확인 brew services info re..

DB/[이론] 2023.07.02