프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krfrom collections import dequedef transform_time(time): h, m = map(int, time.split(':')) return h * 60 + mdef solution(plans): plans.sort(key=lambda x: transform_time(x[1])) answer = [] pause_hw = [] current_hw = None current_end_time = 0 for plan in plans: name, start_tim..
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krimport mathdef solution(k, d): answer = 0 for x in range(0, d + 1, k): y = math.sqrt(d ** 2 - x ** 2) answer += int(y // k) + 1 return answer왜 이렇게 풀었을까?필요한 사전 지식피타고라스 정리, 완전 탐색 최적화하는 방법(이중 for문을 단일 for문으로)이 문제로부터 구현력 기르기특정 x값에 대해 가능한 최대 y값을 피타고라스 정리를 활용하여 계산하였습니다.int(y // k) + 1로..
드디어 길고 길었던 Conti:ed 서비스 구현이 마무리되고, 배포까지 완료가 되었습니다. 정신없이 구현하고 배포하는 바람에 전혀 하지 못했던 기록들이 밀리고 밀렸습니다.하지만 이대로 그냥 덮어두고 끝내기에는 아쉬웠기 때문에 회고록을 적어보며, 코드 리팩토링도 진행해볼 예정입니다. 제가 주먹구구식으로 구현한 방식이나 구조를 파악하고 조금 더 효율적으로 수정해보고자 합니다. 📢 Conti:ed 개요프로젝트 인원은 2명으로 제가 Frontend 및 AI를 담당하고 다른 인원이 Backend를 담당하여 진행했습니다.간략하게 Conti:ed 서비스에 관해 설명하자면, CCM(기독교 찬양) 관련 재생목록을 사용자가 생성 및 공유하고, 사용자의 입력에 따라 AI 및 유튜브가 재생목록을 생성해주는 서비스라고 보시면..
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krdef compress(s, n): result = '' cnt = 1 prev = s[:n] for i in range(n, len(s), n): cur = s[i:i+n] if cur == prev: cnt += 1 else: result += (str(cnt) + prev) if cnt > 1 else prev prev = cur cnt = 1 result += (str(cnt) + prev) if cnt..
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT CATEGORY, SUM(SALES) TOTAL_SALESFROM BOOK B JOIN BOOK_SALES BS ON B.BOOK_ID = BS.BOOK_IDWHERE BS.SALES_DATE BETWEEN '2022-01-01' AND '2022-01-31'GROUP BY CATEGORYORDER BY CATEGORY왜 이렇게 풀었을까? 2022년 1월의 카테고리별 도서 판매량을 계산하기 위해 두 테이블을 BOOK_ID를 기준으로 JOIN(INNER JOIN)했습니다.이후 WHERE 절을 이용해 2022년 1월에 해당하는 데이터만 필터링하였고,..
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE, CASE WHEN OUT_DATE IS NULL THEN '출고미정' WHEN OUT_DATE 왜 이렇게 풀었을까?CASE 구문을 통해서 OUT_DATE가 NULL인 데이터들은 출고미정으로, OUT_DATE가 22년 5월 1일 전일 경우에는 출고가 완료된 상태로, 이외에는 대기 상태로 지정해주었습니다.또 '%Y-%m-%d' 형식으로 날짜를 출력해주어야했기에 DATE_FORMAT 함수를 이용해서 ..
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT INS.NAME, INS.DATETIMEFROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTSON INS.ANIMAL_ID = OUTS.ANIMAL_IDWHERE OUTS.ANIMAL_ID IS NULLORDER BY INS.DATETIME ASCLIMIT 3;왜 이렇게 풀었을까?Left Join을 사용하여 ANIMAL_INS에 있는 동물 중 ANIMAL_OUTS에 없는 데이터를 필터링해냈습니다.또 WHERE 조건에 있는 IS NULL 조건으로 입양되지 않은 동물을 식별할 수 있었습니다.또한 보호 시작일 순..
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT E1.ID, E1.GENOTYPE AS GENOTYPE, E2.GENOTYPE AS PARENT_GENOTYPEFROM ECOLI_DATA E1 JOIN ECOLI_DATA E2 ON E1.PARENT_ID = E2.IDWHERE (E1.GENOTYPE & E2.GENOTYPE) = E2.GENOTYPEORDER BY E1.ID ASC;왜 이렇게 풀었을까?Self Join으로 부모 ID와 자신의 ID가 같은 데이터들을 고른 뒤,비트 연산 중 AND 연산(E1.GENOTYPE & E2.GENOTYPE)의 결과를 부모의 형질과 비교..