본문 바로가기
알고리즘 풀이/SW Expert Academy

[SWEA 1860] 진기의 최고급 붕어빵 (python)

by char_lie 2023. 3. 2.
반응형

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LsaaqDzYDFAXc 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

진기의 최고급 붕어빵 문제

특정 시간이 지나면 붕어빵을 갯수 만큼 굽고, 그걸 손님이 구매 할 수 있는지 없는지 판단하는 문제

100% 내 생각으로 풀었는가?
→ O

조금 생각해보면 쉽게 접근 할 수 있는 문제

내가 푼 정답 코드

T = int(input())
for case in range(1,T+1):
    N, M, K = map(int, input().split())
    x = list(map(int, input().split()))
    visit = [0]*11112 # 최대 시간
    taiyaki = 0 # 붕어빵
    trying = 'Possible'
    for i in x:
        visit[i] += 1 # 손님의 방문 시간에 += 1

    for i in range(11112): # 1초부터 11111초까지
        if i > 0 and i % M == 0: # M초 지나면
            taiyaki += K # K개 붕어빵을 굽자
        taiyaki -= visit[i] # 해당 시간에 방문하는 사람 수만큼 붕어빵 빼주자
        if taiyaki < 0: # 붕어빵이 음수면
            trying = 'Impossible' #불가능
            break
    print(f'#{case} {trying}')

최대 시간인 11111까지를 리스트를 만들어 해당 초에 손님이 몇이나 오는지 세고, 그만큼 구워준 붕어빵에서 갯수를 빼가면서 체크해주는 문제

while문으로 구현 했을때 1000개의 테스트케이스중 993개가 맞고 7개를 못찾았었는데, 테스트 케이스중 손님이 아예 0초부터 오는 케이스를 고려해주지 않아서 발생한 오류였는데, 굳이 while문으로 안하고 for문으로 이렇게 구현하면 쉽게 해결 할 수 있다.


느낀 점

처음에 while문으로 하다가 조건 하나 빼먹어서 애먹은 문제로 for문으로 수정해서 쉽게 해결 할 수 있었다. 놓치기 쉬운 조건이어서 찾느라 애먹었다. 그래도 큰 문제 없이 구현에 성공한 문제로 손쉽게 해결 할 수 있었다.

반응형

댓글