프로그래머스 50

내적 # zip()

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이) def solution(a, b): answer = [x*y for x,y in zip(a,b)] result = sum(answer) return result ① answer = [x*y for x,y in zip(a,b)] # zip() 함수를 사용하여 a와 b 리스트를 엮어준다 # 엮은 리스트에서 x 와 y로 임의의 값을 주고 x*y 를 계산해준다 # 계산한 값은 리스트 인수로 반환 ② result = sum(answer)..

가운데 글자 가져오기 # 슬라이싱

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. s는 길이가 1 이상, 100이하인 스트링입니다. def solution(s): answer = '' if len(s) % 2 == 0: answer = s[len(s) // 2 - 1 : len(s) //2 + 1] else: answer = s[len(s) // 2] return answer ① if len(s) % 2 == 0: # s 의 길이가 짝수일때 ② answer = s[len(s) // 2 - 1 : len(s) //2 + 1] # 인덱스를 출력하기 위해 len(s)//2 이렇게 나눈 몫으로 인덱스의 값을 반환 중간 값을 구해주기 때문에 2로 나누어준다!! 5..

제일 작은 수 제거하기 # del , remove(), min()

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. def solution(arr): if len(arr)==1: del arr[0] arr.append(-1) elif len(arr)>=2: arr.remove(min(arr)) return arr ① if len(arr)==1: # arr의 길이가 1일 경우 (숫자가 1개만 있을 경우에는 -1 을 반환..

대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요. SELECT MONTH(start_date) MONTH , car_id , COUNT(*) RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE (START_DATE between '2022-08-01'..

SQL 코드카타 2024.04.09

음양 더하기

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요. signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇제 않으면 음수임을 의미합니다. def solution(absolutes, signs): answer = 0 for i in range(len(absolutes)): if signs[i]: answer += absolutes[i] else: answer -= absolutes[i] return answer ① for i in range(len(absolutes)): # a..

헤비 유저가 소유한 장소 # where 절 서브쿼리

이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요. SELECT id,name,host_id FROM places WHERE host_id IN ( SELECT host_id FROM places GROUP BY 1 HAVING COUNT(host_id)>=2 ) ① SELECT host_id FROM places GROUP BY 1 HAVING COUNT(host_id)>=2 # host_id 가 2건 이상인 헤비유저를 뽑아준다 ② WHERE host_id IN (1번 서브쿼리) # 헤비유저들만 조회해준다

SQL 코드카타 2024.04.04

자동차 평균 대여 기간 구하기

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요. SELECT car_id , ROUND(AVG(DATEDIFF(end_date,start_date)+1),1) AVERAGE_DURATION FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY GROUP BY 1 HAVING AVERAGE_DURATION>=7 ORDER BY 2 DE..

SQL 코드카타 2024.04.04

서울에서 김서방 찾기 # index()

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. def solution(seoul): a=seoul.index("Kim") return "김서방은 "+str(a)+"에 있다" ① a=seoul.index("Kim") # index() 문자열, 리스트, 튜플에서 위치(인덱스) 를 찾아준다 특정 문자열의 위치(인덱스) 찾기 ① find() # 문자열만 가능 ② index() # 문자열,리스트,튜플에서 가능 * 두가지 모두 딕셔너리에서 사용 시 에러발생함 > 딕셔너리는 인덱스가 없기 때문에! ③ format함..

나누어 떨어지는 숫자 배열

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. def solution(arr, divisor): answer = [] for array in arr: if array % divisor==0: answer.append(array) answer.sort() if len(answer)==0: answer.append(-1) return answer ① answer = [] # 원하는 값이 배열에 추가되도록 빈 리스트를 생성 ② for array in arr: if array % divisor==0: answer.app..

자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 # SELECE절 서브쿼리

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 2022년 10월 16일에 대여 중인 자동차인 경우 '대여중' 이라고 표시하고, 대여 중이지 않은 자동차인 경우 '대여 가능'을 표시하는 컬럼(컬럼명: AVAILABILITY)을 추가하여 자동차 ID와 AVAILABILITY 리스트를 출력하는 SQL문을 작성해주세요. 이때 반납 날짜가 2022년 10월 16일인 경우에도 '대여중'으로 표시해주시고 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요. SELECT CAR_ID, IF(CAR_ID IN (SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE START_DATE = '2022-10-16'), '대여중', '대여 가능') A..

SQL 코드카타 2024.04.03