분류 전체보기

코딩테스트

[카카오 2020 블라인드 코딩테스트] 문자열 압축 (c++)

https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위의 문제에 대한 풀이입니다. 우선 문제를 보면 무식한 방식으로 풀어도 될거같다는 느낌이 옵니다. 제한사항을 보면 문자열 길이가 1000이하로 주어졌는데, 반복가능한 문자열 단위는 최대 500입니다. 그 이유는 전체 문자열 길이의 절반을 넘어가면 반복되는 문자열을 통한 압축이 불가능해지기 때문입니다 ex: aaaabb >> 길이 단위를 4로 해도 2aaaa 이런식으로 압축이 불가능합니다. 길이가 ..

코딩테스트

[2021 카카오 블라인드 코딩테스트] 택시 합승 (c++)

https://school.programmers.co.kr/learn/courses/30/lessons/72413 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위의 문제에 대한 풀이입니다. 이번엔 오답+ 정답 코드를 포스팅하는데, 우선 정답 먼저 보겠습니다. 택시합승이란 문제는 결국 어느지점까지 합승할지? 를 해결하면 풀 수 있습니다. 따라서 플로이드 와샬 알고리즘을 통하여 모든 노드들 간의 최단거리를 찾고, 어떤 합승지점에서 최소 값이 나오는지 linear 탐색을 통해 찾으면 해결됩니다. 아래는 해결 코드입니다. #include #include #in..

코딩테스트

[2021 카카오 블라인드 테스트] 순위 검색 (c++)

https://school.programmers.co.kr/learn/courses/30/lessons/72412 위의 문제에 대한 해설입니다. input으로 들어오는 2개의 vector 에서 각 벡터 안 1개의 string들은 총 5가지 유효한 string 정보를 가지고 있다. parser를 통해 유효한 5개의 string의 string을 추출한 뒤, 마지막에 위치한 점수에 대한 부분은 stoi() 함수를 통해 숫자로 바꾼다. map 자료구조를 통해 앞선 4개의 string들을 하나로 묶어 key 값으로써 사용하고, stoi()를 통해 정수형으로 바꾼 점수 정보를 value로써 추가한다. 이때 고려할 사항은 query에서는 '-' 라는 문자열이 특수성을 가진다는 것이다. '-'는 어떤 것이 와도 상관없..

데이터베이스(rebooting now)

[db] recovery system

Recovery System Transaction의 durability와 같은 내용에 대해서 다룬다. Db에 장애가 발생해도 DB 시스템은 안전하게 유지되게 만드는 시스템이다. Fail 에서도 데이터 완전 무결성 보장하게 만드는 것이 Recovery system 이다. when? Transaction 자체의 실패( rule 지키지 못함) 서로 다른 transaction 수행할 때, deadlock 발생시 시스템이 특정 transaction 중단 가능 시스템 자체에 문제 생길 수 도 있다. (누가 전원 끈다거나.. 등)T1 이 A,B 에 write로 수정시, 둘 중 1개만 update같은건 안된다. Transaction은 겉으로 보기에 묶여있는 듯하지만, 놀리적인 개념이기에 실제로 일부는 DB에 반영되고,..

데이터베이스(rebooting now)

[db] concurrency

동시성 제어 실제로 concurrency하게 운용하며 conflict seriality 보장하려면 precedence 그래프 같은거론 불가능하다. 보통 아래와 같은 2가지 방법이 존재한다. 1) Lock 사용 하는 방법 2) lock 사용 x 방법( timestamp로 transaction의 순서 정하기) Serial order Lock: lock을 먼저 잡은 transaction이 앞 순서. timestamp: “start” 시간으로 나열. 하지만 실제 concurrency 환경에선 시작 순서와 다르게 먼저 끝날 수 도>> 이런거 조심해야한다. Ex) serial order 대로 늦게 시작한 놈이 final write할수도 Lock 한시점에 1개 객체만 접근하는 것을 보장한다. Physical lock..

데이터베이스(rebooting now)

[db] transaction

https://codenme.tistory.com/22 데이터베이스 참고자료 index~ recovery system codenme.tistory.com 위의 자료를 기반으로 작성한 내용입니다. 페이지 별로 관련 내용을 정리한 것이니, 해당 자료와 함께 보는 것을 권장 드립니다. Transaction의 개념 트랜잭션(Transaction)이란? 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다. 각 유저는 혼자 db 사용한다고 생각하도록, 운영되어야하고, 실제로 여러 유저가 동시 접근을 수행하더라도, 에러가 생겨 데이터에 손상이 가서는 안된다. 예시 A 가 어떤 값을 읽으려고 접근하는데, 다른 누군가가 그사이에 해당 값을 바꿨다면, 데이터의 일관성에 문제가 생기는 것이다. 이처럼, DB..

데이터베이스(rebooting now)

[db] query optimization

https://codenme.tistory.com/22 데이터베이스 참고자료 index~ recovery system codenme.tistory.com 위의 자료를 기반으로 작성한 내용입니다. 페이지 별로 관련 내용을 정리한 것이니, 해당 자료와 함께 보는 것을 권장 드립니다. (update at 23-08-09) Query Optimization 실제로 특정 데이터를 얻기 위한 요청을 처리할 때 해당 요청에 부합하는 쿼리는 여러가지가 있다. 이들 중, 최적의 query 찾아서 연산 시간을 줄이는 것을 query optimization 이라고 한다. 동일한 결과를 내는 Relation, operation 조합들 중, 해당 상황에서 최적의 대안 쿼리를 찾아서 수행하는 것으로 이를 줄일 수 있다. 한번 특..

데이터베이스(rebooting now)

[db] query processing

https://codenme.tistory.com/22 데이터베이스 참고자료 index~ recovery system codenme.tistory.com 위의 자료를 기반으로 작성한 내용입니다. 페이지 별로 관련 내용을 정리한 것이니, 해당 자료와 함께 보는 것을 권장 드립니다. (update at 23-08-08) Query Processing 데이터베이스에서 데이터를 가져오거나 데이터를 삽입할 때 사용하는 언어를 Query라고 한다. 쿼리는 실제 연산 속도에 큰 영향을 미친다. Query Processing이란 우리가 보낸 Query를 데이터베이스가 처리하는 과정을 말한다. Query Processing 구조 1) Parsing and translation: query를 internal form으로 ..

코앤미
'분류 전체보기' 카테고리의 글 목록 (18 Page)