알고리즘12 [프로그래머스] 할인 행사 📖 문제 요약 XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합니다. XYZ 마트에서는 회원을 대상으로 매일 한 가지 제품을 할인하는 행사를 합니다. 할인하는 제품은 하루에 하나씩만 구매할 수 있습니다. 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입을 하려 합니다. 정현이가 원하는 제품을 나타내는 문자열 배열 want와 정현이가 원하는 제품의 수량을 나타내는 정수 배열 number, XYZ 마트에서 할인하는 제품을 나타내는 문자열 배열 discount가 주어졌을 때, 회원등록시 정현이가 원하는 제품을 모두 할인 받을 수 있는 회원등록 날짜의 총 일수를 return 하는 solution 함수를 완성하시오. 가능한 날이 없으면 .. 2023. 5. 2. [프로그래머스] 여행경로 📖 문제 요약 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3개 이상 10,000개 이하입니다. tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다. 주어진 항공권은 모두 사용해야 합니다. 만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다. 모든 도시를 방문할 수 없는 경우는 주어지지 않습니다. 🤔 나의 생각 처음에 든 생각은 이 문제는 순열.. 2023. 4. 28. [프로그래머스] 단어 변환 📖 문제 요약 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 변환할 수 있는지 return 하도록 solution 함수를 작성해주세요. 제한사항 각 단어는 알파벳 소문자로만 이루어져 있습니다. 각 단어의 길이는 3 이상 10 이하이며 모든 단어의 길이는 같습니다. words에는 3개 이상 50개 이하의 단어가 있으며 중.. 2023. 4. 18. [프로그래머스] 구명보트 문제 요약 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 이때 구명보트에 탈수있는 인원은 최대 2명, 무게 제한 limit도 존재합니다. 사람들의 몸무게를 담은 배열 people와 무게제한 limit가 매개변수로 주어질때, 모든 사람을 구출하기 위한 최소한의 구명보트의 수를 return하는 함수를 작성하시오. 나의 생각 처음 문제를 풀때는 인원 제한이 2명이 존재한다는 것을 알지 못하고 구현하였습니다. 문제 요약을 작성하면서 2명 제한이 있는 것을 발견하였기 때문에 이 부분은 문제를 해결할때 적용이 되지 않았지만 문제 해결은 되었습니다. 먼저 무게가 많은 사람부터 적은 순으로 정렬하였습니다. 구명 보트의 무게제한때문에 무게가 많이 나가는 사람은 다른 사람과 함께 탑승할 가능성이 적기 때문.. 2023. 4. 2. [백준] 피보나치 함수 문제 요약 아래와 같이 N번째 피보나치 수를 구하는 C++ 함수가 존재합니다. int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } 위의 함수를 호출해서 피보나치 수를 구할때 출력되는 0과 1의 횟수를 구하려고 합니다. 예시 fibonacci(2) 호출시 0 ⇒ 1번, 1 ⇒ 1번 호출됨 fibonacci(3) 호출시 0 ⇒ 1번, 1 ⇒ 2번 호출됨 나의 생각 먼저 문제에서 제공한 fibonacci 함수를 그대로 구현 후 활용하면 속도에서 문제가 발생할 것이라 생각하였습니다. 이.. 2023. 3. 19. [백준] 블랙잭 문제 정리 N개의 숫자가 주어지고 그 중에서 3개를 선택해서 주어지는 모두 더한 값이 M보다 작거나 같은 값 중에서 가장 큰 값을 구하세요. 나의 생각 주어지는 N개의 숫자중에서 서로 다른 3개의 숫자를 선택하는 조합이라고 생각하였습니다. N개에서 3개를 선택하는 모든 경우를 구하기 위해서 DFS 알고리즘을 사용하였습니다. 지금까지는 DFS 알고리즘을 사용할때 배열에서 한번 선택한 값을 제거하기 위해서 filter를 사용하였습니다. 다른 사람의 풀이를 보았을 때 속도가 10배 이상 차이가 나는 것을 확인 하여 visited 배열을 사용하게 되었습니다. 이는 깊이 우선탐색 방법인 DFS의 특성 때문에사용 가능한 방법으로, 이번에 선택한 인덱스의 아이템은 깊이의 마지막에 도달하기 전까지 다시 재사용할일이 없.. 2023. 3. 16. 이전 1 2 다음