전체 글 144

[프로그래머스] 타겟 넘버 (DFS/BFS)

코딩테스트 공부하기로 마음먹고 처음 풀어본 문제다. 하지만.. 결과는 처.참.했.다. 검색을 해보니 DFS/BFS 문제로 푼다고 한다. 둘 중 스택을 이용한 DFS로 풀이 하는 것으로 이해했고 풀이했다. 문제 2번째 예시인 numbers가 [4,1,2,1] 인 경우를 생각해봤다. def solution(numbers, target): answer = 0 n = len(numbers) # temp, idx 값을 의미 stack = [[numbers[0], 0], [-1*numbers[0], 0]] while stack: temp, idx = stack.pop() idx += 1 if idx < n: stack.append([temp+numbers[idx], idx]) stack.append([temp-nu..

Algorithm/Problems 2022.08.02

[프로그래머스] 오랜 기간 보호한 동물(2)

SELECT A.ANIMAL_ID, A.NAME FROM ANIMAL_INS A inner join ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID ORDER BY B.DATETIME - A.DATETIME desc limit 2; (입양일 - 보호시작일)이 가장 큰 값이 보호소에서 가장 오랜 기간 보호된 동물이다. DATETIME 끼리 연산을 할 수 있어서 정렬을 - 연산을 이용하여 해주었다. 다른 방법으로, DATEDIFF 함수를 사용하여 계산해 줄 수 있다. DATEDIFF(날짜1,날짜2) = 날짜1 - 날짜2 [실행결과]

Language/SQL 2022.07.13

[Jupyter Notebook] 주피터 노트북 시작 폴더 변경

1. Jupyter Notebook 환경설정 base 1-1. cmd 및 파워쉘 혹은 Anaconda Powershell Prompt 를 실행시켜 명령어 입력 이때, OS가 윈도우인 경우 cmd보다 파워쉘의 명령어가 많고 간혹 명령어가 다른 경우도 있어 cmd에서는 실행되지 않는 경우가 있다고 한다! (본인은 Anaconda Powershell Prompt를 사용했다.) jupyter notebook --generate-config 1-2. 위 실행결과에 나온 경로로 들어가 파일 수정 아래 보이는 파일에서 #c.NotebookApp.notebook_dir= '' 문장을 수정해야 한다. 1-2-1. 파일 우클릭 후 연결 프로그램에서 메모장으로 파일을 연다. 1-2-2. 메모장에서 #c.NotebookApp..

Language/Python 2022.07.06

[프로그래머스] 중성화 여부 파악하기

SELECT ANIMAL_ID, NAME, CASE WHEN SEX_UPON_INTAKE LIKE 'Neutered%' OR SEX_UPON_INTAKE LIKE 'Spayed%' THEN 'O' ELSE 'X' END as 중성화 FROM ANIMAL_INS ORDER BY ANIMAL_ID; CASE 문 첫번재 조건이 충족되면 값을 반환한다. 조건이 True면 읽기를 중지하고 결과를 반환하고 조건이 False면 ELSE 절의 값을 반환한다. ELSE절이 없고 조건이 False면 NULL을 반환한다. WHEN과 THEN은 한쌍이어야 하며, 다수가 존재할 수 있다. [실행결과]

Language/SQL 2022.07.05

[프로그래머스] 이름에 el이 들어가는 동물 찾기

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE ANIMAL_TYPE = 'Dog' and NAME LIKE '%EL%' ORDER BY NAME; WHERE절에 LIKE를 이용하여 EL이 어느 위치에서든 포함되면 조회되도록 했다. 이때, '개' 라고 언급되어 있으니 ANIMAL_TYPE 조건도 걸어주어야 한다. 대소문자 구분하지 않는다고 하여 (NAME LIKE '%el%' OR NAME LIKE '%EL%') 이라 작성했었는데 그럴 필요가 없었다...!

Language/SQL 2022.07.05

[프로그래머스] 루시와 엘라 찾기

SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty') ORDER BY ANIMAL_ID; IN 조건 WHERE절에서 여러 값을 OR 관계로 묶어 나열할 때 사용할 수 있다. 조건의 범위를 지정할 때 사용한다. 컴마(,)로 구분하여 괄호 내에 묶으며, 이 값 중 하나 이상과 일치하면 True로 판단된다. IN 연산자 안에 서브쿼리를 넣을 수 있다. [실행결과]

Language/SQL 2022.07.05

[프로그래머스] 보호소에서 중성화한 동물

SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME FROM ANIMAL_INS A INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID WHERE A.SEX_UPON_INTAKE LIKE 'Intact%' and (B.SEX_UPON_OUTCOME LIKE 'Neutered%' OR B.SEX_UPON_OUTCOME LIKE 'Spayed%') ORDER BY A.ANIMAL_ID; 보호소에 들어올 당시에는 중성화 되지 않았지만 보호소를 나갈 때 중성화된 동물을 조회하는 문제다. ANIMAL_INS의 SEX_UPON_INTAKE, ANIMAL_OUTS의 SEX_UPON_OUTCOME 값을 확인하면 된다. Intact ~, Spayed~,..

Language/SQL 2022.07.05

[프로그래머스] 오랜 기간 보호한 동물(1)

SELECT A.NAME as NAME, A.DATETIME as DATETIME FROM ANIMAL_INS A LEFT OUTER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID WHERE B.ANIMAL_ID IS NULL ORDER BY A.DATETIME limit 3; ANIMAL_ID를 기준으로 ANIMAL_INS를 왼쪽에 두고 LEFT OUTER JOIN을 실행한다. ANIMAL_INS에만 값이 존재하면 입양을 가지 못한 동물임을 뜻한다. 이때, ANIMAL_OUTS의 ANIMAL_ID는 NULL을 갖게 되므로 조건을 둔 후에 limit 명령어를 통해 3개만 조회되도록 한다. [실행결과]

Language/SQL 2022.07.05

[프로그래머스] 있었는데요 없었습니다

보호시작일 보다 입양일이 더 빠른 동물을 조회해야 하는 문제다. ANIMAL_INS의 DATETIME은 보호시작일, ANIMAL_OUTS의 DATETIME은 입양일이다. SELECT A.ANIMAL_ID as ANIMAL_ID, A.NAME as NAME FROM ANIMAL_INS A INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID WHERE A.DATETIME >= B.DATETIME ORDER BY A.DATETIME; ANIMAL_ID가 같은 것을 기준으로 ANIMAL_INS와 ANIMAL_OUTS 테이블 INNER JOIN 한 후, A.DATETIME (ANIMAL_INS의 DATETIME -> 보호 시작일)보다 B.DATETIME(입양일)이 더 ..

Language/SQL 2022.07.05