📌 파이썬 연습문제 [반복문 4-6]
📋 교통 과속 프로그램
'''
첫차 : 오전 6시 막차 : 오후 23시 운행 종료
A버스 : 15분 간격 운행
B버스 : 13분 간격 운영
---------------------------------------
첫차 : 6시 20분 막차 : 오후 22시
C버스 : 8분 간격 운행
집앞 버스 정류장에서 학교까지 가는 버스 A,B,C의 운행정보가 다음과 같을 때, 2대 이상의 버스가 정차하는 시간대를 출력해보자.
'''python
stepA = 15
stepB = 13
stepC = 8
for i in range(60 * 17+1):
if 20 < i <= 60 * 16:
if i % stepA == 0 and i % stepC == 0:
print(f'BUS A | BUS C 동시 운행\t : \t{(60 * 6 + i) // 60}시 {(60 * 6 + i) % 60}분 ')
if i % stepC == 0 and i % stepB == 0:
print(f'BUS B | BUS C 동시 운행\t : \t{(60 * 6 + i) // 60}시 {(60 * 6 + i) % 60}분 ')
if i % stepA == 0 and i % stepB == 0:
print(f'BUS A | BUS B 동시 운행\t : \t{(60 * 6 + i) // 60}시 {(60 * 6 + i) % 60}분 ')
📋 최소 공배수 구하기 : 톱니바퀴 문제
'''
톱니가 각각 A개와 B개의 톱니바퀴가 서로 맞물려 회전할 때,
회전을 시작한 후 처음 맞물린 톱니가 최초로 다시 만나게 될때 까지의 톱니의 수와 각각의 바퀴 회전수를 출력해보자 (단. B는 A보다 크다)
'''
gearA = int(input('GearA 톱니의 수 입력 : '))
gearB = int(input('GearB 톱니의 수 입력 : '))
flag = True
leastNum = 0
aNum = gearA
bNum = gearB
while flag:
if aNum == leastNum:
flag = False
print(f'gearA : {aNum}\t gearB : {bNum}')
aNum += gearA
if leastNum != bNum:
bNum += gearB
if bNum % gearA == 0:
leastNum = bNum
print(f'최초 만나는 톱니 수 : {leastNum}')
print(f'gearA 회전 수 : {leastNum // gearA}')
print(f'gearB 회전 수 : {leastNum // gearB}')
📋 윤년 계산기
'''
연도가 4로 나누어 떨어지고 100으로 나누어 떨어지지 않으면 윤년이다.
또는 연도가 400으로 나누어 떨어지면 윤년이다.
'''
year = int(input('연도 입력 : '))
if year % 4 == 0 and year % 100 != 0:
print(f'{year}년 : 윤년')
elif year % 400 == 0:
print(f'{year}년 : 윤년')
else:
print(f'{year}년 : 평년')
기초 파이썬 연습 문제 fin (230305)
#후기
59번 문제가 생각보다 굉장히 오래 걸렸다. 처음에 접근을 잘못해서 효율성이 떨어지는 쓸데없이 긴 코드를 만들었다..결국 답의 힘을 조금빌려 풀었다 ^-^
파이썬 기초 연습문제 중에서는 '*'로 모양 만들기, 버스 공동 운행 시간 구하기, 최소 공배수 구하기 문제가 시간을 가장 많이 잡아 먹었다.
오랜만에 코딩 공부하면서 느낀 점이지만,, 코딩은 작은 점 하나만으로도 코드 결과가 완전히 달라져서 복잡하게 코드를 짤수록 오류를 찾기 어렵다. 한 시간 넘게 고민했던 문제가 엄청 단순할 경우에는 살짝 허무함도 느껴진다ㅎ 코딩은 답이 정해진 게 아니니깐 여러 접근 방법을 생각해 볼 필요가 있는 것 같다!