프로그래머스 98

[Lv.2 / 프로그래머스 / SQL] 입양 시각 구하기(1)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) DATETIME 타입에서 시간을 추출하여 그룹별로 묶었을 때, 그 개수를 같이 조회해야 한다. HOUR() 함수를 통해 DATETIME에서 시간을 구할 수 있다. SELECT HOUR(DATETIME) AS HOUR, COUNT(ANIMAL_ID) AS COUNT FROM ANIMAL_OUTS GROUP BY HOUR HAVING HOUR >= 9 AND HOUR < 20 ORDER BY HOUR

[Lv.3 / 프로그래머스 / SQL] 헤비 유저가 소유한 장소

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) 테이블 내에 HOST_ID의 개수가 2개 이상인 데이터들을 조회해야 한다. 우선 HOST_ID의 개수를 세는 쿼리를 작성하고 INNER JOIN을 통해 연결하여 해결했다. SELECT A.ID, A.NAME, A.HOST_ID FROM PLACES AS A INNER JOIN (SELECT HOST_ID, COUNT(HOST_ID) AS CNT FROM PLACES GROUP BY HOST_ID HAVING CNT > 1) AS B ON A.HOST_ID = B.HOST_ID ORDER B..

[Lv.2 / 프로그래머스 / SQL] 중성화 여부 파악하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) SEX_UPON_INTAKE 컬럼에 Neutered, 혹은 Spayed의 포함 여부를 O, X로 표기하는 컬럼을 추가하여 조회해야 한다. CASE, 혹은 IF문을 활용하여 해결할 수 있다. IF SELECT ANIMAL_ID, NAME, IF (SEX_UPON_INTAKE LIKE "%Neutered%" OR SEX_UPON_INTAKE LIKE "%Spayed%", "O", "X") AS "중성화" FROM ANIMAL_INS ORDER BY ANIMAL_ID CASE SELECT ANI..

[Lv.1 / 프로그래머스 / SQL] 이름이 있는 동물의 아이디

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) NAME이 NULL이 아닌 데이터의 ANIMAL_ID를 오름차순으로 조회해야 한다. SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID

[Lv.2 / 프로그래머스 / SQL] 중복 제거하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) 중복과 NULL이 아닌 이름의 개수를 조회해야 한다. DISTINCT를 이용하여 중복을 제거한 항목을 조회할 수 있다. SELECT COUNT(DISTINCT NAME) AS count FROM ANIMAL_INS WHERE NAME IS NOT NULL

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

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) ANIMAL_TYPE이 DOG이면서 이름에 'el'이 들어가는 데이터를 조회해야 한다. LIKE의 와일드카드인 %를 이용하여 해결할 수 있다. SELECT ANIMAL_ID , NAME FROM ANIMAL_INS WHERE NAME LIKE "%el%" AND ANIMAL_TYPE = "DOG" ORDER BY NAME

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

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) ANIMAL_INS에는 존재하지만 ANIMAL_OUTS에는 존재하지 않는 데이터를 찾아, DATETIME이 가장 낮은 3개의 데이터를 조회해야 한다. LEFT OUTER JOIN을 할 경우 위의 그림과 같이 JOIN하는 테이블에 없는 데이터도 함께 조회가 된다. 이후, WHERE절을 이용해 JOIN하는 테이블의 외래키 값이 없는 경우만 조회하도록 하자. SELECT INS.NAME , INS.DATETIME FROM ANIMAL_INS AS INS LEFT OUTER JOIN ANIMAL_..

[Lv.2 / 프로그래머스 / 파이썬] 덧칠하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 n만큼의 길이의 벽에 한 번에 m만큼의 길이로 페인트칠이 가능할 때, 빈 구역을 모두 칠할 수 있는 최소 횟수를 구해야 한다. 입출력 예와 같은 벽이 있는 것처럼 배열을 하나 구성하고, 덧칠하는 방식으로 해결했다. def solution(n, m, section): ans = 0 a = [True] * (n+1) for i in section: a[i] = False for i in range(1,n+1): if a[i] == False: a[i:i+m] = [True]*(m) ans+=1 return ..

[Lv.1 / 프로그래머스 / SQL] 최댓값 구하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) 모든 데이터에서 가장 늦게 들어온 데이터의 날짜를 조회해야 한다. MAX를 통해 쉽게 구할 수 있다. SELECT MAX(DATETIME) AS 시간 FROM ANIMAL_INS

[Lv.3 / 프로그래머스 / SQL] 있었는데요 없었습니다

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) ANIMAL_INS와 ANIMAL_OUTS 두 테이블에 모두 데이터가 존재하면서, ANIMAL_INS의 DATETIME이 ANIMAL_OUTS의 DATETIME보다 더 뒤인 데이터를 조회해야 한다. 두 테이블 모두에 존재해야 하므로 INNER JOIN을 사용하며, 날짜 조건은 WHERE을 사용하도록 하자. SELECT INS.ANIMAL_ID , INS.NAME FROM ANIMAL_INS AS INS INNER JOIN ANIMAL_OUTS AS OUTS ON INS.ANIMAL_ID =..

반응형