[백준] 2531번: 회전초밥

Narcoker·2023년 6월 16일
0

코딩테스트

목록 보기
109/150

문제

https://www.acmicpc.net/problem/2531

풀이

연속적으로 먹을 수 있는 케이스를 배열로만들고
배열의 값들을 모두 set에 집어넣는다.

set에 쿠폰을 사용할 수 있는 음식을 넣는다.

이후 answer와 set의 길이 중 큰 것으로 answer에 할당한다.

N, d, k, c = map(int, input().split(" "))
foods = [int(input()) for _ in range(N)]


def solution(N, d, k, c, foods):
    answer = 0
    for i in range(N):
        case = []
        for j in range(k):
            case.append(foods[(i + j) % N])
        set_case = set(case)
        set_case.add(c)
        answer = max(answer, len(set_case))

    print(answer)


solution(N, d, k, c, foods)

회고

처음에 deque를 사용해서 케이스를 구했다.
deque를 바로 set에 넣을 수 없어서 list로 바꿔준 뒤 set에 넣는 식으로 했는데
시간 초과가 났다.

자료구조 전환 시 시간 복잡도가 원소의 개수만큼 필요로 하기 때문이다.
라이브러리와 자료구조에 의존하면 안되겠다는 생각을 했다.

profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글