목록분류 전체보기 (90)
오랑우탄의 반란
오늘도 오랑이는 문제를 풉니다. 숫자 문자열과 영단어 풀이 과정2021 카카오 채용연계형 인턴십 문제라길래 조금 쫄았지만 생각보다 개념적인 부분을 확실히 하고 있는지 확인하는 간단한 문제였습니다. 코드를 기깔나게 짜는 것도 언젠가는 중요하겠지만 뭐든 개념부터 확실하게 제대로 배웠는지가 우선인 것 같습니다. 하지만 딕셔너리 작성이 귀찮았던 오랑이는 리스트로 문제를 풀었습니다. 리스트의 값에 대해서, s에 포함된 경우 s의 문자를 해당 인덱스값으로 교체해주는 코드입니다. def solution(s): num = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'] for i in num: if..
오늘도 오랑이는 문제를 풉니다. 시저 암호 풀이 과정알파벳 str 을 직접 만들어서 써야 하는 문제입니다. 저는 대문자, 소문자 둘 다 만들기 귀찮아서 하나만 만들어서 활용했습니다. 나중에 다른 사람들의 풀이를 보니 따로 str 작성 없이 함수를 활용해서 간단하게 푸는 방법이 있더군요 ! (정석풀이) 역시 오랑이는 아직 갈 길이 멉니다~ 1차 풀이를 살펴봅시다.각각 소문자, 대문자, 공백에 대한 경우를 나눠서 계산하도록 해야 합니다. 이때 z → a 로 알파벳이 이어지게 하는 게 중요한데, 처음에는 25를 기준으로 25보다 작으면 j, 아니면 (j-26) 형식으로 생각했는데 필요 이상으로 if문이 많아져서 ('아 이렇게 지저분할 일이 없어' 라는 생각으로 풀었읍니다..) 그보다 간단하게 26으로 나눈 나..
오늘도 오랑이는 문제를 풉니다. 최소직사각형 풀이 과정왜인지 모르겠으나 문제를 복잡하게 생각해서 리스트 조작을 두번씩이나 하면서 복잡하게 풀어버렸습니다. 거대해진 코드..def solution(sizes): w = [] h = [] for i in range(len(sizes)): w.append(max(sizes[i][0], sizes[i][1])) h.append(min(sizes[i][0], sizes[i][1])) w.sort(reverse = True) h.sort(reverse = True) return w[0]*h[0] 하지만 이 문제는 max 함수의 속성을 잘 이해하고 있으면 한 줄로 세상 간단하게 풀 수 있는 정말 파..
오늘도 오랑이는 문제를 풉니다. 550. Game Play Analysis IV 풀이 과정우선 날짜 조건을 지정해줍니다. 이전에 봤던 SELF JOIN 을 활용한 문제와 비슷하게 DATEDIFF(날짜1, 날짜2) = 1 AND 날짜2 > 날짜1 조건으로 풀려고 했는데 이보다 더 간단한 시간/날짜 계산 함수가 있었습니다. DATE_ADD & DATE_SUB 시간/날짜 계산 함수사용 방법은 간단합니다. 기준 날짜와 계산 단위를 인수로 받아서 작동합니다. DATE_ADDDATE_ADD(기준날짜, INTERVAL 기간)#예시DATE_ADD(NOW(), INTERVAL 3 DAY)--> 현재 날짜 + 3일 DATE_SUBDATE_SUB(기준날짜, INTERVAL 기간)#예시DATE_SUB(NOW(), INT..
오늘도 오랑이는 문제를 풉니다. 1174. Immediate Food Delivery II 풀이 과정우선 first order에 대한 조건을 정리해줍니다.where (delivery_id, order_date) in (select delivery_id, min(order_date) from delivery group by 1) 그리고 이에 대한 count 를 구해줍니다.avg 함수를 쓰면 우리가 원하는 결과를 sum / 없이 간단하게 구할 수 있습니다. 이때 avg 안에 if __ 1, 0 으로 함수를 넣었는데 따로 숫자를 지정해주지 않아도 알아서 일치하는 값 (True) 에 대해서 1, 불일치 값 (False) 에 대해서 0을 출력해서 평균이 구해집니다. select avg(customer_pref_..
오늘도 오랑이는 문제를 풉니다. 1193. Monthly Transactions I 풀이 과정우선 간단한 조건부터 정리해서 써줍니다.select date_format(trans_date ,'%Y-%m') as month, country, count(id) as trans_count, /*QUERY*/ as approved_count, sum(amount) as trans_total_amount, /*QUERY*/ as approved_total_amountfrom transactionsgroup by 1, 2 ; approved_count 와 approved_total_amount 는 각각 state = 'approved' 라는 조건이 필요한데, ..
오늘도 오랑이는 문제를 풉니다. 삼총사 풀이 과정리스트의 각 인덱스 값이 출력되도록 for문으로 i, j, k 의 범위를 설정해줍니다.i는 0~, j 는 i를 제외하도록 i+1~, k는 i와 j 를 제외하도록 j+1 을 시작점으로 설정해줍니다. 각 인덱스에 대해 출력되는 값을 더한 것이 숫자 3개의 조합이 됩니다. def solution(number): for i in range(len(number)): for j in range(i+1,len(number)): for k in range(j+1,len(number)): answer = number[i]+number[j]+number[k] 숫자 3개의 합이 0이 되면 '삼총사'이기 때문에 i..
오늘도 오랑이는 문제를 풉니다. 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기문제CAR_RENTAL_COMPANY_CAR CAR_RENTAL_COMPANY_RENTAL_HISTORY CAR_RENTAL_COMPANY_DISCOUNT_PLAN 1. 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 WHERE CAR_TYPE IN ('세단', 'SUV')2. 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 START_DATE, END_DATE 조건3. 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 FEE BETWEEN 50만 AND 200만4. 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력 SELECT CAR_ID, ..