https://school.programmers.co.kr/learn/courses/30/lessons/131127
def solution(want, number, discount):
answer = 0
for i in range(len(discount)):
daydiscount = discount[i:i+sum(number)]
count =0
for index, w in enumerate(want):
if daydiscount.count(w) >= number[index]:
count+=1
else:
break
if count == len(number):
answer+=1
return answer
이 문제는 XYZ 마트에서 회원 등록을 하기 위해 할인 행사 기간 중 정확히 원하는 제품과 수량을 할인 받을 수 있는 연속된 날짜를 찾는 문제입니다. 주어진 입력에 따라 할인 행사 일정과 정현이의 원하는 제품과 수량을 비교하여 연속된 날짜를 찾고, 해당 일수를 반환하는 함수를 구현해야 합니다.
처음 이 문제를 봤을 때 for문과 if문을 한번씩 더 돌려 문제를 해결하려 했습니다.
["banana", "apple", "rice", "pork", "pot"] [3, 2, 2, 2, 1] 를 풀어
["banana", "banana", "banana", "apple", "apple", "rice", "rice", "pork", "pork", "pot"]
와 같이 하나의 배열로 만들고 각 요소와 일정의 과일을 각각 비교,
하나하나 remove()를 하여 배열에 들어있는 것을 다쓰면 answer+=1을 해 정답을 구하려 했습니다.
그러나 효율적인면에서, 구현하는 면에서 별로 좋은 생각은 아니라고 생각이 들었고,
count 함수를 사용하는 게 효율적이라는 생각이 들었습니다.
원래 구현하려던 배열은 포기하고, number의 합을 구해 새로운 daydiscount를 구성하니, 효율적으로 답을 구할 수 있었습니다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
코딩테스트 연습 해시 전화번호 목록 (0) | 2023.07.09 |
---|---|
코딩테스트 연습2018 KAKAO BLIND RECRUITMENT[1차] 뉴스 클러스터링 (0) | 2023.07.08 |
코딩테스트 연습 스택/큐 프로세스 (0) | 2023.07.08 |
코딩테스트 연습 스택/큐 기능개발 (0) | 2023.07.07 |
코딩테스트 연습 2018 KAKAO BLIND RECRUITMENT[1차] 캐시 (0) | 2023.07.07 |