for i in range(1, 101):
if i < 10:
if i % 2 == 0:
print(f'[{i}]: 짝수!')
else:
print(f'[{i}]: 홀수!')
else:
if i // 10 % 2 == 0:
num10 = '짝수!!'
else:
num10 = '홀수!!'
if i % 10 == 0:
num1 = 0
elif i % 10 % 2 == 0:
num1 = '짝수!!'
else:
num1 = '홀수!!'
print(f'[{i}] 십의자리: {num10}, 일의자리: {num1}')
반복문 2
num = int(input('정수 입력: '))
total, odd, even= 0, 0, 0
factorial = 1
for i in range(1, num+1):
total += i
factorial *= i
if i % 2 == 0:
even += i
else:
odd += i
print('합 결과 :', total)
print('홀수 결과 :', odd)
print('짝수 결과 :', even)
print(f'팩토리얼 결과 : {factorial:,}')
반복문 3
print('NO.1')
for i in range(1, 6):
print('*' * i)
print()
print('NO.2')
c = 0
for i in range(1, 6 + 1):
print((" " * (6 - i)) + ("*" * i) + ("*" * c))
c += 1
c = 6 - 2
for i in range(6 - 1, 0, -1):
print((" " * (6 - i)) + ("*" * i) + ("*" * c))
c -= 1
bus = [0, 0, 20]
bus_name = {0: 'busA',
1: 'busB',
2: 'busC'}
while bus[0] <= 23 * 60 and bus[2] <= 22 * 60:
for i in range(2):
for j in range(3):
if j > i:
if bus[i] == bus[j]:
hour = bus[i] // 60 + 6
min = bus[i] % 60
print(f'{bus_name[i]}와 {bus_name[j]} 동시 정차!! \t {hour}:{min}')
bus[0] += 15
bus[1] += 13
bus[2] += 8
처음에는 해답 코드를 위와 같이 적었는데, 터미널에서 실행해보니
이런.. 실행 결과가 나와 어떤 점이 문제였는지 생각해보았다.
문제에서는 버스 3대가 한 정류장을 두고 각각 15분, 13분, 8분 간격으로 다시 돌아오는, 원을 그리는 형태였는데 내가 쓴 코드는 한 정류장에서 출발하여 버스가 각각 운행종료 시간을 향해 달려가는.. 일직선 상의 형태를 그려놨던 것이였다.
처음에 다시 생각한 방법은 15, 13, 8의 공배수를 전부 찾아 그 중에서 겹치는 숫자를 토대로 동시정차 문구를 출력하는 방법이였으나 다시 생각해보니 시(hour)를 고려할 것이 아니라 분(minutes)을 고려하여 찾아야한다는 것을 깨달았다.
최선의 방법이 운행 종료 시간인 23시를 maximum으로 두고 매 시간마다 각각의 버스의 배차 간격으로 나눈 분이 0이 되면 체크하는 것이였다.
하여, 아래와 같이 정리해보았다.
busA, busB, busC = 15, 13, 8
max_time = 60 * 17
for i in range(max_time + 1):
hour = i // 60 + 6
minutes = i % 60
if i < 20 or i > 16 * 60:
if i % busA == 0 and i % busB == 0:
print(f'busA와 busB 동시 정차!! \t {hour}:{minutes}')
else:
if i % busA == 0:
if i % busB == 0:
print(f'busA와 busB 동시 정차!! \t {hour}:{minutes}')
elif i % busC == 0:
print(f'busA와 busC 동시 정차!! \t {hour}:{minutes}')
elif i % busB == 0 and i % busC == 0:
print(f'busB와 busC 동시 정차!! \t {hour}:{minutes}')
예전부터 시간 관련 문제에 약한 것을 알고 있었는데 이번에도 시간 문제에 걸렸다 ㅠㅠ.. 더 연습하기