본문 바로가기

프로그래머스9

[프로그래머스] 할인 행사 📖 문제 요약 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.
[프로그래머스] 피보나치 수 문제 요약 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 입니다. 이때 2이상의 n이 주어질때 n번째 피보나치수를 1234567로 나눈 나머지를 구하세요. 나의 생각 최초 배열에 [0, 1]으로 초기화 후 반복문을 통해서 F(n) = F(n-1) + F(n-2)의 공식에 따라 n까지의 피보나치 수를 구합니다. 간단한 문제이지만 주의 해야하는 것은 n이 10만이 되면 정수를 담을 수 있는 사이즈를 초과하게 됩니다. 배열에 저장할 때 1234567을 나눈 나머지 값을 저장해 주어야 합니다. 나머지를 구하는 것이기 때문에 나머지 값으로 피보나치 수를 구해도 동일하게 구할 수 있습니다. function solution(n) { const .. 2023. 3. 16.
[프로그래머스] 가장 큰 수 문제 요약 0 또는 양의 정수가 담긴 배열이 주어졌을 때 해당 수들을 한번씩만 사용하여 이어 붙여 만들 수 있는 가장 큰 수를 반환하세요. 나의 생각 처음에는 DFS를 이용해서 배열에 담긴 모든 요소들을 조합하여 가장 큰 수를 비교하는 방벙으로 구현하였습니다. 그 결과 시간 초과 및 숫자의 길이가 변수에 담을 수 있는 크기를 초과하는 문제가 발생하였습니다. 이를 해결하기 위해 문제의 카테고리에서처럼 정렬 방식으로 구현하도록 변경하였습니다. 두수의 앞뒤를 바꿔가며 이어 붙여 숫자를 만든 후 비교하는 방법을 사용하였습니다. 그리고 정렬이 완료되면 join을 사용하여 하나의 문자열로 만들었습니다. 여기에서 가장 주의해야할 점은 배열의 모든 수가 0인 경우입니다. 배열의 길이가 아무리 길어도 모든 요소가 0인 .. 2023. 3. 14.