Algorithm Problem/Python

[python] SWEA - 4371. 항구에 들어오는 배

deo2kim 2020. 12. 15. 22:44
반응형

🤔문제 해결

  • D3

💨 두번째 즐거운 날 부터 1일과의 차이를 계산한다

💨 그 규칙만큼 마지막 즐거운 날까지의 배를 배열에 담는다.

💨 다음 즐거운 날이 이미 배열에 없는 경우만 차이를 계산하여 반복한다.

 

💨 1, 7, 10, 13, 19

💨 두번째 즐거운 날(7) 과 1일 차이 = 6

💨 배열 = [7, 13, 19]

💨 세번째 즐거운날 10 은 배열에 없으므로 차이 계산

💨 세번재 즐거운 날(10) 과 1일 차이 = 9

💨 배열 = [7, 10, 13, 19]
💨 네번째, 다섯번째 즐거운 날 (13, 19) 는 이미 배열에 있으므로 pass

💨 총 계산을 두 번 했으므로 배는 2개

💻소스 코드

for tc in range(int(input())):
    N = int(input())
    happy_days = []
    for i in range(N):
        happy_days.append(int(input()))

    ships = set()
    answer = 0
    for i in range(1, len(happy_days)):
        if happy_days[i] in ships:
            continue
        gap = happy_days[i] - 1
        for j in range(1 + gap, happy_days[-1] + 1, gap):
            ships.add(j)
        answer += 1

    print(f'#{tc + 1} {answer}')
 

📕문제 확인

출처: SW Expert Academy

 

SW Expert Academy

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

swexpertacademy.com

 

반응형
댓글수0