전체 글 792

[Lv.1 / 프로그래머스 / 파이썬] 택배 상자 꺼내기 (2025 프로그래머스 코드챌린지 2차 예선)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이 주어진 조건대로 상자를 쌓은 뒤, 해당 지점에서부터 몇 층의 박스가 쌓여있는지 확인하면 된다. def solution(n, w, num): # 박스 정리 MAX_ROW = n//w+1 boxes = [] for row in range(MAX_ROW): boxes.append([row*w + i if row*w + i = MAX_ROW: return res if boxes[r][c] == 0: return res

[Lv.2 / 프로그래머스 / 파이썬] 충돌위험 찾기 (PCCP 기출문제 3번)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이 딕셔너리를 이용하여 해결 가능한 시뮬레이션 구현 문제이다. 문제 풀이 시 특별하게 필요한 알고리즘은 존재하지 않으나, 주어진 조건에 맞게 정확하게 구현해야 한다. def solution(points, routes): # 번호별로 좌표를 map에 담음 point_map = dict() for i in range(len(points)): point_map[i+1] = points[i] robots = [] for route in routes: start_x, start_y = point_map...

[Lv.1 / 프로그래머스 / 파이썬] 데이터 분석 (PCCE 기출문제 10번)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이 리스트에 담겨 있는 자료를 조건에 따라 적절히 필터링하고, 정렬하여 출력하는 문제이다. sort 함수의 key 파라미터로 람다 함수를 넘겨 보다 쉽게 정렬할 수 있다. def solution(data, ext, val_ext, sort_by): idx = ["code", "date", "maximum", "remain"] data = [d for d in data if d[idx.index(ext)]

[Lv.2 / 프로그래머스 / SQL] 카테고리 별 상품 개수 구하기

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이(MySQL) PRODUCT_CODE의 앞 두 글자를 잘라 그룹화한 뒤, COUNT() 집계 함수를 통해 그 개수를 세어야 한다. LEFT() 함수를 통해 문자열의 앞부터 자를 수 있다. 반대로 RIGHT()는 오른쪽부터, 중간부터 자르고 싶다면 SUBSTRING을 사용하면 된다. SELECT LEFT(PRODUCT_CODE, 2) AS CATEGORY, COUNT(1) AS PRODUCTSFROM PRODUCTGROUP BY CATEGORYORDER BY CATEGORY

[Lv.1 / 프로그래머스 / SQL] 흉부외과 또는 일반외과 의사 목록 출력하기

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 (MySQL) DATE_FORMAT 함수를 통해 연-월-일 단위 까지만 출력해주어야 한다. SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMDFROM DOCTORWHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'ORDER BY HIRE_YMD DESC, DR_NAME ASC

[Lv.1 / 프로그래머스 / 파이썬] 동영상 재생기 (PCCP 기출문제 1번)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 문자열로 주어진 모든 시간을 초 단위로 환산한 뒤, 계산이 전부 끝난 다음 다시 원래 포맷으로 변환시켜주는 방법을 사용하면 구현이 보다 편하다. 다시 문자열로 치환할 때 분 혹은 초 단위가 10 미만일 때에도 두 자리수로 표현해야 함에 유의해야 한다.그리고 사용자의 입력 타이밍과 상관 없이 현재 시간이 오프닝 사이에 위치하게 되면 오프닝의 끝으로 이동하게 된다. 따라서 사용자 입력 전후로 체크해주도록 하자. def solution(video_len, pos, op_start, op_end, commands): # 전부 초 단위로 치환 vid..

[Lv.3 / 프로그래머스 / SQL] 대장균의 크기에 따라 분류하기 2

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이(MySQL) NTILE() 함수를 사용하면 특정 데이터를 등급별로 분류할 수 있다. 문제에서는 총 4가지의 등급이 존재하므로 해당 함수를 통해 4등급으로 나눈 뒤, CASE 별로 문자로 치환하면 문제를 해결할 수 있다. SELECT ID, CASE WHEN NTILE(4) over (ORDER BY SIZE_OF_COLONY) = 1 THEN "LOW" WHEN NTILE(4) over (ORDER BY SIZE_OF_COLONY) = 2 THEN "MEDIUM" WHEN NTILE(4) over (OR..

[Lv.2 / 프로그래머스 / SQL] 조건에 맞는 사원 정보 조회하기

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   풀이(MySQL) HR_DEPARTMENT 테이블은 문제 해결을 위해 불필요하다. 따라서 HR_EMPLOYEES, HR_GRADE 두 테이블로 문제를 해결할 수 있다. 핵심은 상반기 하반기의 점수를 합쳐서 내림차순으로 정렬을 하는 것이다. HALF_YEAR야 어찌 되었든, 한 사원 당 YEAR 별 SCORE는 상반기와 하반기 최대 두 개가 존재할 것이므로, EMP_NO만 그룹으로 묶어 SCORE를 집계한다면 한 해의 총 점수를 구할 수 있을 것이다.  따라서 EMP_NO 컬럼을 기준으로 GROUP BY로 묶은 뒤, SUM() 집계 함수로 SCORE의 합..

[Lv.4 / 프로그래머스 / SQL] 주문량이 많은 아이스크림들 조회하기

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   풀이(MySQL) FIRST_HALF는 FLAVOR가 중복된 행이 없지만, JULY 테이블에는 같은 FLAVOR가 존재할 수 있다.  따라서 JULY 테이블 기준으로 FLAVOR를 그룹화하여 TOTAL_ORDER를 SUM 집계 함수로 다시 계산한 다음, FIRST_HALF와 조인하여 구하면 된다. SELECT JULY.FLAVORFROM JULYLEFT JOIN FIRST_HALFON FIRST_HALF.FLAVOR = JULY.FLAVORGROUP BY FLAVORORDER BY FIRST_HALF.TOTAL_ORDER..

[Lv.2 / 프로그래머스 / SQL] 성분으로 구분한 아이스크림 총 주문량

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이(MySQL) JOIN을 통해 각 FLAVOR의 INGREDIENT_TYPE을 구한 뒤, 그 타입별로 TOTAL_ORDER의 합계를 구해야 한다.  타입별로 묶어야 하므로 GROUP BY를 통해 그룹화해서 문제를 해결할 수 있다. SELECT INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDERFROM FIRST_HALFINNER JOIN ICECREAM_INFOON FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVORGROUP BY INGREDIENT_TYPEORD..

반응형