프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ROUND, AVG, JOIN, LIKE, GROUP BY 주소에 '%서울%' 라고 하면 틀리는군요. 서울시가 아닌 서울 지명이 있는걸까요? 쿼리문 SELECT A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS, ROUND(AVG(B.REVIEW_SCORE),2) as SCORE FROM rest_info A JOIN rest_review B ON A.rest_id = B.rest_id WHERE A.address LIKE '서울%' GROUP BY ..
(python3) 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주 www.acmicpc.net 아이디어 1. A를 왼쪽으로 모은다 2. B를 왼쪽으로 모은다 3. A를 오른쪽으로 모은다 4. B를 오른쪽으로 모은다 단순화하면 이렇게 4가지 경우가 가능합니다. 한가지만 풀린다면 똑같은 방법론을 적용해서 나머지를 해결해줄 수 있으니 1번 예시만 생각해보겠습니다. A를 왼쪽으로 모으는 경우 왼쪽부터 탐색하면서 A를 옮기면 항상 (연속된A)(연속된B)(새로만난A) 의 배치가 유지됩니다. 여기서 그리디가 적용됩니다. 왼..
알고리즘 풀때 코드를 종종 고치는 습관이 있는데요, 오늘도 그런 코드를 하나 만났습니다. 이 코드를 한 번 볼께요. for i in range(N) : if L[i] == 'B' : blue_left+=1 if i > blue_left : # 여기가 문제 blue_cnt_left+=1 원래 처음 의식의 흐름으로 작성한 코드는 아래와 같습니다. for i in range(N) : if L[i] == 'B' : if i > blue_left+1 : blue_left+=1 # 중 blue_cnt_left+=1 else : blue_left+=1 # 복 일단 처음에 코드를 짤 때 blue_left에는 "왼쪽에 연속된 B의 마지막 인덱스" 라는 암묵적인 의미를 부여해주었습니다. BBBAAB 라면 blue_left..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DATE LIKE date 컬럼도 like 로 조회할 수 있다. 단, 저장 형식에 맞춰서 조회해야한다. 들여쓰기와 줄바꿈을 적절히 사용하면 더 가독성이 좋은 쿼리를 작성할 수 있다. 쿼리문 SELECT board_id, writer_id, title, price, CASE WHEN status='SALE' THEN '판매중' WHEN status='RESERVED' THEN '예약중' ELSE '거래완료' END AS status FROM used_goods_board # WHERE YEAR(created_d..
(python3) 1446번: 지름길 첫째 줄에 지름길의 개수 N과 고속도로의 길이 D가 주어진다. N은 12 이하인 양의 정수이고, D는 10,000보다 작거나 같은 자연수이다. 다음 N개의 줄에 지름길의 시작 위치, 도착 위치, 지름길의 길이 www.acmicpc.net DP로 해결하기 n지점 이하의 dp 배열이 최단으로 저장되어있다는 가정하에, dp[n] = min(dp[n], dp[n-1]+1) 입니다. 바로 앞 지점에서 1만큼 더 이동하거나 이미 지름길로 더 짧게 도달하거나 둘 중 하나입니다. 그리고 지름길 시작점이 n 이라면 끝점의 dp 값을 변경해주어야 합니다. dp[끝점] = min(dp[끝점], dp[시작점]+지름길 길이) 앞서서 말한 가정을 성립시키기 위해서는 지름길들이 시작점 기준..
(python3) 15989번: 1, 2, 3 더하기 4 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 www.acmicpc.net 수학으로 해결하기 1,2,3으로 조합해서 수를 만드는 방법은, 3을 먼저 넣고, 남은 값을 2로 만들고, 그리고 남은 값은 1을 채우는 것과 같다. 코드 import sys def solution(input) : N = int(input().strip()) for _ in range(N) : S = 0 n = int(input().strip()) for i in range(n//3 ..