728x90

전체 글 306

[백준 14720번] 우유 축제 (Python)

> Python , 그리디 알고리즘 편 📖 문제 : 우유 축제 영학이는 딸기우유, 초코우유, 바나나우유를 좋아한다. 입맛이 매우 까다로운 영학이는 자신만의 우유를 마시는 규칙이 있다. 맨 처음에는 딸기우유를 한 팩 마신다. 딸기우유를 한 팩 마신 후에는 초코우유를 한 팩 마신다. 초코우유를 한 팩 마신 후에는 바나나우유를 한 팩 마신다. 바나나우유를 한 팩 마신 후에는 딸기우유를 한 팩 마신다. 영학이는 우유 축제가 열리고 있는 우유거리에 왔다. 우유 거리에는 우유 가게들이 일렬로 늘어서 있다. 영학이는 우유 거리의 시작부터 끝까지 걸으면서 우유를 사먹고자 한다. 각각의 우유 가게는 딸기, 초코, 바나나 중 한 종류의 우유만을 취급한다. 각각의 우유 가게 앞에서, 영학이는 우유를 사마시거나, 사마시지 않..

[프로그래머스 고득점 Kit - 해시] 베스트앨범 (Python) (A.sort(key=lambda x:(-x[0],x[1])로 2차원 리스트 오름차순, 내림차순 동시에 정렬)

📖 문제 : 베스트앨범 문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호가 i인..

[프로그래머스 고득점 Kit - 해시] 완주하지 못한 선수 (Python) (Collections 모듈의 Counter 함수)

📖 문제 : 완주하지 못한 선수 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 participant completion r..

[프로그래머스 고득점 Kit - 해시] 폰켓몬 (Python) (Set함수로 리스트안 중복 값 제거하기)

📖 문제 : 폰켓몬 문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번..

[프로그래머스 SQL(SUM, MAX, MIN)] 중복 제거하기 (FROM절에 서브쿼리 사용하기)

📖 문제 : 중복 제거하기 문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. NAME TYPE NULLABLE ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE INTAKE_CONDITION VARCHAR(N) FALSE NAME VARCHAR(N) TRUE SEX_UPON_IN..

[프로그래머스 SQL(IS NULL)] 이름이 없는 동물의 아이디 (IS NULL으로 NULL값인 데이터 찾기, IS NOT NULL)

📖 문제 : 이름이 없는 동물의 아이디 문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. NAME TYPE NULLABLE ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE INTAKE_CONDITION VARCHAR(N) FALSE NAME VARCHAR(N) TRUE SEX_..

[프로그래머스 SQL(IS NULL)] 경기도에 위치한 식품창고 목록 출력하기 (IFNULL으로 NULL값을 다른 데이터로 변경하여 조회하기)

📖 문제 : 경기도에 위치한 식품창고 목록 출력하기 문제 설명 다음은 식품창고의 정보를 담은 FOOD_WAREHOUSE 테이블입니다. FOOD_WAREHOUSE 테이블은 다음과 같으며 WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, TLNO, FREEZER_YN는 창고 ID, 창고 이름, 창고 주소, 전화번호, 냉동시설 여부를 의미합니다. Column name Type Nullable WAREHOUSE_ID VARCHAR(10) FALSE WAREHOUSE_NAME VARCHAR(20) FALSE ADDRESS VARCHAR(100) TRUE TLNO VARCHAR(20) TRUE FREEZER_YN VARCHAR(1) TRUE 문제 FOOD_WAREHOUSE 테이블에서 경기도에 위..

[Python Algorithm] Dynamic programming(동적계획법) - 위상정렬(그래프 정렬)

> Dynamic programming(동적계획법) - 위상정렬 : 일의 선후관계를 유지하면서 전체 일의 순서를 짜는 알고리즘, 그래프와 진입차수가 중요함 (두 가지를 만들어둬야 함) 예를 들어 아래의 그림을 보면 4번 정점의 진입차수는 1과 5에서 4로 향하는 방향 2개 존재. 그래서 진입차수는 2 이런 식으로 각각 차수 값을 저장해둬야함. 📖 문제 : 위상정렬(그래프 정렬) 위상정렬은 어떤 일을 하는 순서를 찾는 알고리즘입니다. 각각의 일의 선후관계가 복잡하게 얽혀있을 때 각각 일의 선후관계를 유지하면서 전체 일의 순서를 짜는 알고리즘입니다. 만약 아래와 같은 일의 순서를 각각 지키면서 전체 일의 순서를 정한다면 1 4 //1번일을 하고 난 후 4번일을 해야한다. 5 4 4 3 2 5 2 3 6 2 ..

[Python Algorithm] Dynamic programming(동적계획법) - 회장뽑기(플로이드-워샬 응용)

> Dynamic programming(동적계획법) - 플로이드 워샬 알고리즘 : 모든 정점이 모든 정점으로 가는 비용을 구하는 알고리즘 (2차원리스트) 📖 문제 : 회장뽑기 월드컵축구의 응원을 위한 모임에서 회장을 선출하려고 한다. 이모임은 만들어진지 얼마 되지 않았기 때문에 회원사이에 서로 모르는 사람도 있지만, 몇 사람을 통하면 서로 모두 알 수 있 다. 각 회원은 다른 회원들과 가까운 정도에 따라 점수를 받게 된다. 예를 들어 어느 회원이 다른 모든 회원과 친구이면, 이 회원의 점수는 1점이다. 어느 회원의 점수가 2점이면, 다른 모든 회원이 친구이거나, 친구의 친구임을 말한다. 또한, 어느 회원의 점수가 3점이면, 다른 모든 회원이 친구이거나, 친구의 친구이거나, 친국의 친구의 친구임을 말한다...

[Python Algorithm] Dynamic programming(동적계획법) - 플로이드 워샬 알고리즘

> Dynamic programming(동적계획법) - 플로이드 워샬 알고리즘 : 모든 정점이 모든 정점으로 가는 비용을 구하는 알고리즘 (2차원리스트) 📖 문제 : 플로이드 워샬 알고리즘 N개의 도시가 주어지고, 각 도시들을 연결하는 도로와 해당 도로를 통행하는 비용이 주어질 때 모든 도시에서 모든 도시로 이동하는데 쓰이는 비용의 최소값을 구하는 프로그램을 작성하 세요. 입력설명 첫 번째 줄에는 도시의 수N(N 정점 1을 지난다는 것. k = 3 이면, 1, 2, 3 중에서 사용해가면서 최솟값을 구하는 것 ! 1,2,3 순서가 필수가 아닌 321 213 이 될 수도 123 다 안쓰일 수도 ! 출처 인프런 : 파이썬 알고리즘 문제 풀이

728x90