[Python] 버스 배차 프로그램 / 톱니바퀴

이소티·2023년 4월 23일

python

목록 보기
7/33

반복문

# 버스는 총 3종류, 각각 A,B,C

# 먼저 오전 6시 첫차 : 오후 23시 운행 종료
# A버스 : 15분 간격 운행
# B버스 : 13분 간격 운영

# 6시 20분 첫차 : 오후 22시 운행 종료
# C버스 : 8분 간격 운행

# 집앞 버스 정류장에서 학교까지 가는 버스 A,B,C의 운행정보가 위와 같을 때,
# 2대 이상의 버스가 정차하는 시간대를 모두 출력



busA = 15 ; busB = 13 ; busC = 8

totalMin = 17*60




for i in range(totalMin+1) : 
    
    
    # A,B bus만 운행
    
    if i < 20 or i > (totalMin - 60) : 

        if (i % busA == 0) & (i % busB == 0) :

            hour = 6 + i // 60
            min = i % 60

            print('busA와 busB 동시 정차!! \t {}:{}'.format(hour,min)) 
    
    
    else :

        # A,B bus 동시 정차
        if (i % busA == 0) & (i % busB == 0) :

            hour = 6 + i // 60
            min = i % 60

            print('busA와 busB 동시 정차!! \t {}:{}'.format(hour,min))
        
        # A,C bus 동시 정차
        elif (i % busA == 0) & ((i-20) % busC == 0) :

            hour = 6 + i // 60
            min = i % 60

            print('busA와 busC 동시 정차!! \t {}:{}'.format(hour,min))
        
        # B,C bus 동시 정차
        elif (i % busB == 0) & ((i-20) % busC == 0) :

            hour = 6 + i // 60
            min = i % 60

            print('busB와 busC 동시 정차!! \t {}:{}'.format(hour,min))



# 톱니가 각각 7개와 12개의 두 개의 톱니바퀴가 서로 맞물려 회전한다.


# 회전을 시작한 후 처음 맞물린 톱니가 최초로 다시 만나게 될때까지의
# 톱니의 수와 각각의 바퀴 회전수를 출력하는 프로그램

# (단, n2는 n1보다 크다)



gearA_num = int(input('GearA 톱니수 입력 : '))
gearB_num = int(input('GearB 톱니수 입력 : '))




gearA = 0
gearB = 0
leastNum = 0

flag = True




while flag :

    if gearA != 0 :
    
        if gearA != leastNum :
            gearA += gearA_num
            
        else :
            flag = False
            
            
    else :
    
        gearA += gearA_num
    
    if gearB != 0 and gearB % gearA_num == 0 :
        leastNum = gearB
        
    else : 
        gearB += gearB_num




print('최초 만나는 톱니수(최소공배수) : {}톱니'.format(leastNum))
print('gearA 회전수 : {}회전'.format(int(leastNum/gearA_num)))
print('gearB 회전수 : {}회전'.format(int(leastNum/gearB_num)))
profile
데이터 관련 학습 일지

0개의 댓글