PS 공부 기록 18

프로그래머스 SQL 고득점 Kit 6/6 : String, Date

in 연산을 이용한 tuple 내 포함 여부 필터링 select ANIMAL_ID, NAME, SEX_UPON_INTAKE from ANIMAL_INS where NAME in ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty') order by ANIMAL_ID like 연산을 이용한 문자열 부분일치 여부 필터링 select ANIMAL_ID, NAME from ANIMAL_INS where ANIMAL_TYPE = 'Dog' and NAME like '%el%' order by NAME like의 우변 string에는 부분일치 필터링 대상을 입력 '_'는 길이 1의 모든 letter에 일치 '%'는 모든 길이 모든 string에 일치 %로 스플릿해서 사이..

PS 공부 기록 2022.03.31

프로그래머스 SQL 고득점 Kit 5/6 : JOIN

from문 내 join on 구문으로 테이블간의 동기화한 테이블을 타겟팅 select OUTS.ANIMAL_ID, OUTS.NAME from ( ANIMAL_OUTS OUTS left join ANIMAL_INS INS on INS.ANIMAL_ID = OUTS.ANIMAL_ID ) where INS.ANIMAL_ID is NULL order by OUTS.ANIMAL_ID on에는 join문 좌측과 우측 table간의 공통된 키값을 명시 join 시 각 row는 좌측과 우측 table의 모든 column을 갖는다. 해당하는 값이 없을 시엔 null outer, left outer, right outer, inner join은 키값을 기준으로 합집합, 좌/우 부분집합, 교집합을 나타낸다 inner와 le..

PS 공부 기록 2022.03.31

프로그래머스 SQL 고득점 Kit 3/6 : GROUP BY

group by 후 count로 각 column의 row 수 카운트 select ANIMAL_TYPE, count(ANIMAL_TYPE) from ANIMAL_INS group by ANIMAL_TYPE # order by ANIMAL_TYPE having {boolean}으로 group 내에서 조건 필터링 select NAME, count(NAME) from ANIMAL_INS group by NAME having NAME is not null and count(NAME) >= 2 order by NAME where > group은 필터링 후 필터링된 row들에 대해 group하고, group > having은 필터링되지 않은 전체 row들에 대해 group 후 필터링 예제에선 연습이니 having을 ..

PS 공부 기록 2022.03.31

프로그래머스 SQL 고득점 Kit 2/6 : SUM, MAX, MIN

max, min 출력 select max({column}) # select min({column}) from {table} 전체 row count 출력 select count(*) from {table} * 대신 column명을 입력시 null이 아닌 row들을 count nullable한 column이라면 null의 갯수만큼 적은 결과를 출력한다. sub quary를 작성하여 조건 필터링 count select count(*) from ( select NAME from ANIMAL_INS where NAME is not NULL group by NAME ) SubQ from 이하의 서브쿼리 () SubQ의 출력값이 table과 동 역할을 한다 서브쿼리 내에서 not null인 row를 모아 group ..

PS 공부 기록 2022.03.31

프로그래머스 SQL 고득점 Kit 1/6 : SELECT

그냥 기초 문법 배우는 단계라 문제에 풀이랄건 없고 배운 문법구조 정리 SQL에서 데이터 열 출력 포맷 select {column} from {table} 정렬 필요시 order by {column} 역순 정렬은 desc를 명시 asc는 default이기 때문에 생략 가능 order by {column} desc 여러 기준으로 정렬시 단순히 {순서 방향} 쌍 나열로 해결 가능 문자열 사전순 정렬하듯이 최종 정렬 역순으로 order하고 그럴 필요는 없는 것 같다. 코드를 역순으로 읽는지 그냥 우선순위대로 나열하면 알아서 정렬해줌 order by {col1}, {col2} desc, {col3} 조건 필터링은 where equal 논리연산이 ==가 아니라니 이런 근본없는 where {column} = {co..

PS 공부 기록 2022.03.31

Week 10 알고리즘 공부 기록 [아호코라식, hospital-resident assignment problem]

01.06 ~ 01. 12 아호-코라식 마지막으로 아호코라식을 배우는 것으로 새 알고리즘의 공부를 마쳤다. 하산(?)한 뒤로는 계획대로 테크닉을 쌓기 위해 실버-골드 DP 문제를 풀었는데, 갑자기 이것저것 사건이 터져 결과적으로 푼 문제가 적다. 매일 일어나서 워밍업 겸 한두문제만 풀고 외면한 느낌 원래 계획은 일주일~10일 안에 핀토스 프로젝트 3을 끝내고 4까지 미리 끝내는 것이었다. 알고리즘 공부야 집에서 데탑으로도 할 수 있는거니 한 일주일 여유롭게 코테준비만 하면서 설 연휴를 보낼 계획이었는데, 갑자기 나만의 무기 관련해서 신경써야 할 일이 너무 많아졌다. 같은 공지를 보고도 많은 사람들이 나와는 다른 방식으로 받아들인 것 같아 아쉽다. 계획을 실천하지 못한건 반성하고는 싶지만 사실 정글 분위기..

PS 공부 기록 2022.01.16

Diamond V / 알고리즘을 공부하는 이유

와! 목표달성! 코테를 뚫는데에는 골드 상위 문제를 푸는것으로도 충분하다는 말이 있다. 코테를 뚫어본적은 없지만 아마도 맞는 말이라고 생각한다. 그럼에도 굳이 위로 올라가면서 새 알고리즘을 배운 것은, 코딩테스트가 아니라 실제 개발에서 쓰일 알고리즘들이 보였기 때문이다. 문자열 알고리즘은 텍스트가 쓰이는 온갖 곳에 다 활용될 것이고, 이분매칭, 최대유량은 네트워크 플로우라는 이름처럼 네트워크 연결의 우선도를 부여하는 데에 쓰일 수 있을 것이다. 각종 트리의 자료구조는 말할 것도 없고. 수학쪽은 솔직히 재밌어서 푼건데 암호와 보안에 활용될 수도 있다 본다. 개발자는 끊임없이 새 기술을 공부해야 한다는 말이 있다. 나는 이 말이 단순히 새로 나온 기술 스택 정도에만 해당되는 것이 아니라고 생각한다. 알고리즘..

PS 공부 기록 2022.01.08

Week 09 알고리즘 공부 기록 [고속 푸리에 변환]

12.30 ~ 01.05 고속 푸리에 변환 (FFT) 이번주는 PintOS 프로젝트 2가 진행중이다. 다음주 화요일까지라 아직도 하고 있다. 목요일에 부스터샷 맞은 뒤 3일밤낮을 뻗어서 아무것도 못하다가 월요일이 되어 강의실에 오니, 프로젝트 2의 방대한 구현량과 난이도에 숨이 턱 막혔다. 매일매일 하고 있지만 일주일이 지난 아직까지도 반도 못했다는 느낌이 든다. 알고리즘에 많은 시간을 투자했다가는 멸망각이 보이는 상황이라 이번주는 전부터 익히기로 맘먹고 있었던 FFT 딱 하나만 파보기로 맘먹었다. 하루 날잡고 FFT 이론을 보고, 로직을 쭉 읽어가며 파이썬 코드로 구현해 라이브러리를 만들었다. 시작하기 전엔 쫄았지만 푸리에 변환 자체는 학부때 배웠던 거라 의외로 머리에 잘 들어왔던 것 같다. 그 후로는..

PS 공부 기록 2022.01.07

Week 08 알고리즘 공부 기록 [lazy propagation, 머지 소트 트리, 펜윅 트리, mo's, mcmf]

12.23 ~ 12.29 lazy propagation 머지 소트 트리 펜윅 트리 오프라인 쿼리 / mo's min cost max flow 이번주는 PintOS 프로젝트 1을 진행했다. OS란 무엇인가 잘 설명된 영상 강의들을 몇시간 들었는데, 아무래도 영상이란게 자기가 글을 읽는것에 비해서 정보의 밀도가 낮다보니 그리 집중이 되지가 않았다. 그래서 남는 머리와 손으로 알고리즘 문제를 풀어가면서 듣고 강의는 거의 한귀로 듣고 한귀로 흘린 것 같다. 이걸 멀티태스킹이라 해도 되나? 대학생 시절이랑 똑같은듯... 세그먼트 트리의 갱신을 필요한 시점까지 늦춰 효율을 개선한 lazy propagation 정렬된 부분수열을 저장하는 머지 소트 트리 크기 n으로 가볍지만 부분합에 대해서는 세그먼트 트리와 같은 기..

PS 공부 기록 2021.12.30