분류 전체보기 70

[프로그래머스] 입양 시각 구하기(2)

0시부터 23시까지 시간대 별로 입양이 몇 건이 발생했는지 조회해야 한다. 실제 테이블에는 9시부터 17시까지의 기록밖에 없기 때문에 쿼리문에서 로컬 변수를 활용해야 한다. SET @hour := -1; SELECT (@hour := @hour + 1) as HOUR, (SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) AS COUNT FROM ANIMAL_OUTS WHERE @hour < 23; 1. SET @변수명 := 초기값; 으로 변수를 선언한다. @가 붙은 변수는 프로시저가 종료되어도 유지된다. 2. SELECT (@hour := @hour + 1) 은 @hour을 1씩 증가하며 전체 SELECT 문을 실행하며 WHERE 문으로 인해..

데이터베이스 2021.11.28

[SQL] WHERE 과 HAVING 의 차이

WHERE SELECT * FROM 테이블 WHERE 조건절; WHERE 은 기본적인 조건절로 항상 FROM 뒤에 위치하며 다양한 비교 연산자로 구체적인 조건을 줄 수 있다. HAVING SELECT * FROM 테이블 GROUP BY 필드 HAVING 조건절; 항상 GROUP BY 뒤에 위치하며 WHERE 과 마찬가지로 다양한 비교 연산자로 조건을 줄 수 있다. 둘다 필드에 조건을 줄 수 있다는 것은 동일하나, WHERE은 기본적으로 모든 필드에 조건을 둘 수 있지만 HAVING은 GROUP BY로 그룹화 된 필드에 조건을 줄 수 있다. 또한, HAVING에서 조건을 줄 필드는 SELECT에 반드시 명시되어 있어야 한다. 만약 두 조건절을 함께 사용한다면 아래와 같은 형태가 된다. SELECT * FR..

데이터베이스 2021.11.27

psycopg2 설치 오류 해결

pip install을 통해 psycopg2를 설치하려고 하면 계속 Command errored out with exit status 1: 라는 오류가 떴고, pg_config를 찾을 수 없다는 이야기가 뜨며 어떤 버전도 설치할 수 없다고 나온다. 이를 해결하기 위해 구글링을 해보니 psycopg2-binary를 설치하라고 하는데 이 역시 똑같이 pg_config 오류가 뜨고 psycopg2-binary를 설치중인데 psycopg2-binary를 설치하라고 권유한다. 어쩌라는 거지.... 이것저것 시도해봤는데 해결 방법이 의외로 간단했다. https://www.psycopg.org/docs/install.html#binary-install-from-pypi 를 확인 해보면 위와 같이 pycopg2를 설치..

파이썬 2021.10.25

[백준] 21611. 마법사 상어와 블리자드

https://www.acmicpc.net/problem/21611 21611번: 마법사 상어와 블리자드 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그, 비바라기 마법을 할 수 있다. 오늘 새로 배운 마법은 블리자드이고, 크기가 N×N인 격자에서 연습하려고 한다. N은 항상 홀수이고, ( www.acmicpc.net 구슬 탐색을 위한 델타값과 블리자드 마법을 위한 델타값이 다르다는 조건을 제대로 안 읽어서 꽤나 고생했던 문제다. 구슬을 일단 큐에 다 담고 터트려주는 방식을 택했는데 당연하게도 Python으로는 시간초과가 난다. PyPy로는 맞았는데, 다른 사람의 풀이를 보니 투포인터를 이용하여 구현한다면 Python으로도 충분히 돌아갈 것 같다. 그리고 중간에 인덱스 에러가 났는데 이는 큐가..

알고리즘 2021.10.24

[백준] 19237. 어른 상어

https://www.acmicpc.net/problem/19237 19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net 이번에도 deepcopy를 이용해서 원래 맵을 복사해주고, 복사본으로 작업한 뒤 이를 원래 맵에 덮어씌우는 식으로 진행해야 간편하게 풀리는 문제였다. 일단 2차원 리스트를 가지고 이것저것 작업해야하는 문제는 무조건 deepcopy로 배열을 복사해두고 푸는 걸 제일 우선으로 생각해야겠다. 문제가 길고, 설명이 복잡해서 처음에 문제 이해하는 데에만 오래 걸..

알고리즘 2021.10.23

[백준] 19236. 청소년 상어

https://www.acmicpc.net/problem/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net 구현 + 백트래킹 문제인데, '백트래킹 시 이전 상태로 되돌아가야 한다' 라는 걸 생각하지 않고 짜서 꽤나 삽질했다. {물고기 번호:[물고기 y좌표, 물고기 x좌표]}로 구성된 딕셔너리와, maps[y좌표][x좌표] = [물고기 번호, 물고기 방향] 으로 구성된 2차원 배열을 이용하였다. 딕셔너리는 물고기 번호 순서대로 물고기가 이동하기 때문에 key를 이용해 물고기 위치를 파악..

알고리즘 2021.10.22