본문 바로가기

프로그래머스66

프로그래머스 Lv1 가장 많이 받은 선물 (python) 가장 많이 받은 선물 풀이 문제보고 어,,,, 하다가 문제대로 풀면 되겠지하고, 규칙을 정하고 풀었다. 1. 두 사람이 주고 받은 게 있을 때, 선물 수가 다른 경우 2. 두 사람이 주고 받은 게 있을 때, 선물 수가 같은 경우 3. 두 사람이 주고 받은 게 없을 때, 선물 수가 다른 경우 4. 두 사람이 주고 받은 게 없을 때, 선물 수가 같은 경우 이를 생각하고 아래 처럼 풀어봤다. for문과 if 문이 많아 오래 걸린 듯하다. # A, B # A가 B에게 5번, B가 A에게 3번 이면, A가 B에게 선물주기 # 2사람이 주고 받은 기록이 없으면 또는 같은 횟수로 서로에게 줬다면, 선물을 더 많이 줬던 사람이 받음 # 선물지수도 같으면 서로 안주고받음. # 1. 두사람이 서로 주고받은게 있고, 두사람.. 2024. 2. 10.
프로그래머스 Lv1 실패율(python) 실패율 풀이 문제에서 당연히 zero division이 없을 줄 알았는데, zero division의 경우도 고려해야해서 한 번 실패했다. 코드를 몇 번 수정하다가 도전한건데 쓰읍 아쉽다. # 오렐리, #실패율은 다음과 같이 정의 # 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 /스테이지에 도달한 플레이어 수 # 총 스테이지 갯수 N # 사용자가 현재 멈춰있는 스테이지 번호 stages # 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 retun # 각 스테이지에 도착했던 모든 수를 책정 # 각 스테이지에 머물러 있는 사람 수 def solution(N, stages): # 1~N+1까지의 인덱스를 이용하기 위함 stage_contact_number = [0] * .. 2024. 2. 9.
프로그래머스 Lv2 할인 행사(python) 할인 행사 풀이 시간초과는 나지 않을까 어떻게 풀까 하다가 이중 for문에 for-else문을 사용하기로 했다. 첫번째 for문에서 discount를 10일간격으로 확인할 수 있게 함 두번째 for문에서 행사 첫째날부터 마지막날까지의 행사 품목과 구매 갯수를 입력시킴 이를 3번째 for문에서 정현이가 원하는 구매 품목 갯수와 비교하여서, for-else문을 통해 answer += 1을 완성 answer를 반환 # xyz 마트 금액 지불 시 10일 동안 회원 됨 # 매일 1가지 제품 할인 행사. 이 제품은 하루에 하나씩만 구매 가능 # 정현이는 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입 할 거임 # want는 정현이가 원하는 제품 # number는 want에 맞게 .. 2024. 2. 8.
프로그래머스 Lv2 피로도 (python) 피로도 풀이 DFS 방법을 이용했다. visited를 설정해 주고, 이를 활용한 재귀로 문제를 해결했다. 또한, dungeons를 받은 그대로가 아닌 최소 필요 피로도를 기준으로 내림차순으로 정렬한 후, 진행하도록 하였다. # 피로도 시스템 # 각 던전마다 필요한 '최소 필요 피로도', 탐험 후 '소모 피로도' # 하루에 한 번씩 탐험할 수 있는 던전 여러개를 최대로. # k = 현재피로도, dungeons는 [최소 필요 피로도, 소모 피로도] answer = 0 visited = [] def go_to_d(k, dungeons): global visited global answer for i in range(len(dungeons)): if visited[i] == 0 and dungeons[i][0].. 2024. 2. 7.
프로그래머스 Lv2 귤 고르기(python) 귤 고르기 풀이 귤이 많은 개수를 구하면 쉽게 풀릴 것이라 생각해서, 아래처럼 풀이를 해봤다. 딕셔너리 대신 리스트를 이용해서 풀어보았고, 제출했을 때, 꽤나 시간이 오래 걸려서 실패하나 싶었지만, 아슬하게 통과를 했다. # 귤을 수확 # 'k'개를 골라 상자 하나에 담아 판매, 귤을 크기별로 분류, 서로 다른 종류의 수를 최소화 # [1, 3, 2, 5, 4, 5, 2, 3] 8개 중 6개의 귤이면, 1, 4 를 제외하면 2,3,5롷 서로 다른 종류가 최소 # {1:1, 2:2, 3: 2, 4: 1, 5:2}이니까 # 서로 다른 종류의 수의 최솟값을 return def solution(k, tangerine): numbers = [[i+1 , 0] for i in range(max(tangerine)).. 2024. 2. 6.
프로그래머스 Lv1 덧칠하기 (python) 덧칠하기 풀이 처음에 어 쉽네 했는데 멍청하게 풀어서 실패했다. 그리고 다음은 이렇게 해야지! 하고 풀었는데 계속 실패했다. 왜지왜지왜지 하다가 보니까 stamp.append(section[i]+m-1) 부분을 stamp.append(stamp[-1]+m) 로 적어놨다. 하필 테스트케이스가 다 통과되는 바람에 제대로 찾지를 못했다. 그래도 코드를 천천히 보면서 직접 해결할 수 있어서 다행이다. # n미터의 벽을 따로따로 나눠서 1~n까지의 벽돌이 있다고 생각해보자. # m은 한번에 연속된 벽돌을 페인트칠할 수 있는 갯수임 막대기로 페인트를 찍어낸다 생각하자. # section은 그 n개의 벽돌 중 색칠이 안 된 벽돌 번호. # section을 모두 해결하려면 최소 몇번의 m 막대기를 찍어야하나? def .. 2024. 2. 5.