프로그래머스 50

크기가 작은 부분문자열

숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.def solution(t, p): answer = 0 n = len(p) for i in range(len(t)-n+1): parts = t[i:i+n] if parts t: "10203"p: "15"  ① n ..

삼총사 #combinations

한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다.한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요.def s..

이상한 문자 만들기

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.제한 사항 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.def solution(s): answer = '' s_list = s.split(' ') for i in s_list: for j in range(len(i)): if j % 2 ==0 : answer += i[j].up..

직사각형 별찍기

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.n, m = map(int, input().strip().split(' '))for i in range(m): print('*'*n)     ①n, m = map(int, input().strip().split(' ')) # input() 에 5 3 이 들어가게 되면# stirp() 로 좌우의 공백을 제거하여 5 3 으로 추출# split(' ') 로 5와 3을 각각 문자열로 나누어준다.# map() 함수에 int 형을 사용하여 문자열을 정수형으로 바꾸어 준다.  > n = 5> m = 3 ② for i in range(m): print('*..

행렬의 덧셈 #list(map(lambda 매개변수:표현식),반복)

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.def solution(arr1, arr2): answer = [] for i in range(len(arr1)): answer.append(list(map((lambda x,y : x+y), arr1[i],arr2[i]))) return answerarr1 = [[1,2],[2,3]]arr2 = [[3,4],[5,6]] ① answer = []# 빈 리스트 생성 ② for i in range(len(arr1)):# arr1 의 길..

상품을 구매한 회원 비율 구하기

USER_INFO 테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요. SELECT YEAR(sales_date) , MONTH(sales_date) , COUNT(DISTINCT user_id) PUCHASED_USERS , ROUND(COUNT(DISTINCT user_id)/ (SELECT COUNT(user_id) FROM us..

SQL 코드카타 2024.04.19

자동차 대여 기록 별 대여 금액 구하기

CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '트럭'인 자동차의 대여 기록에 대해서 대여 기록 별로 대여 금액(컬럼명: FEE)을 구하여 대여 기록 ID와 대여 금액 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 대여 기록 ID를 기준으로 내림차순 정렬해주세요. SELECT history_id , round(daily_fee * (datediff(end_date, start_date) + 1) * COALESCE(1 - (discount_rate * .01),1) ,0) AS fe..

SQL 코드카타 2024.04.18

약수의 개수와 덧셈

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. def solution(left, right): answer = 0 for i in range(left,right+1): count = 0 for n in range(1,i+1): if i%n == 0: count += 1 if count %2 == 0: answer += i else: answer -= i return answer ① for i in range(left,right+1): # left 부터 right 까지의 수를 반복하는 i 를 생성 # left = 13 ri..

특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정렬, 자동차 종류까지 같은 경우 자동차 ID를 기준으로 내림차순 정렬해주세요. SELECT c.car_id , c.car_..

SQL 코드카타 2024.04.16

입양 시각 구하기(2) #WITH RECURSIVE , SET함수

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. WITH RECURSIVE 구문 사용 WITH RECURSIVE TIME AS( SELECT 0 AS h UNION ALL SELECT h+1 FROM TIME WHERE h < 23) SELECT h, COUNT(HOUR(DATETIME)) AS 'COUNT' FROM TIME LEFT OUTER JOIN ANIMAL_OUTS ON h=HOUR(DATETIME) GROUP BY h ORDER BY h; ① WITH RECURSIVE TIME AS( # 가상 테이블명 TIME 생성 ② SELE..

SQL 코드카타 2024.04.11