Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

우주에서 글을 적어본다

99클럽 코테 스터디 27일차 TIL + 시뮬레이션 본문

항해99 TIL

99클럽 코테 스터디 27일차 TIL + 시뮬레이션

우주로 날아간 사람 2024. 8. 17. 20:47

[오늘의 학습 키워드 및 문제]
- 프로그래머스의 "할인 행사" 문제를 풀었다.
- 오늘도 시뮬레이션 문제이다. 코테에 많이 나오는 유형이니 많이 푸는 게 좋겠다.
- 두 가지 방식이 떠올라서 두 번 풀어봤다.

[나의 코드]

def solution(want, number, discount):
    answer = 0
    check_list = []
    for i in range(len(want)):
        for j in range(number[i]):
            check_list.append(want[i])
    check_list.sort()
    
    for i in range(len(discount) - 9):
        if sorted(discount[i:i + 10]) == check_list:
            answer += 1
    return answer

첫 번째 방식은 정렬을 이용했다.
discount 배열의 길이가 최대 100,000이므로 O(n)까지는 괜찮을 거라 생각했다.

check_list 라는 배열을 하나 만들어서 사야 할 것들을 다 넣어놓고 정렬을 해준다.
그다음 discount 배열을 열 개씩 끊어서 정렬하고 check_list와 일치하는지 확인해 주면 끝이다.

def solution(want, number, discount):
    answer = 0
    
    for i in range(len(discount) - 9):
        temp = discount[i:i + 10]
        count = 0
        for j in range(len(want)):
            if temp.count(want[j]) == number[j]:
                count += temp.count(want[j])
        if count == 10:
            answer += 1
    return answer

이 풀이는 따로 배열을 만들지 않고, temp에 들어있는 각 원소가 필요한 만큼 있는지 세주면 된다.

참고로 첫 번째가 더 빨랐던 것 같다. (가물가물)

[오늘의 회고]
- 오늘은 쉬웠다.
- 더 어려운 문제를 주시오!
- 요즘 날씨가 더워서 그런지 채소 가격이 말이 안 되던데, 빨리 안정되었으면 한다... 끝!