1번문제
고도가 60m 올라갈 때마다 기온이 0.8도 내려 간다고 할 때 고도를 입력하면
기온이 출력되는 프로그램을 만들어 보자 (지면온도: 29도)
#내풀이 (풀다가 해결 못했다...)
# a = int(input('고도 입력: '))
# temperature = 0.8
# ground_tem = 29
#
# if a// 60 :
# a = ground_tem-temperature
# print('출력된 기온:{}'.format(a))
########################################
#제로베이스 풀이
baseTemp = 29 #지면온도
step = 60 #상승 60
stepTemp = 0.8 # 내려가는 기온
height = int(input('고도 입력:'))
targetTemp = baseTemp - (height // step) * 0.8 # 지면온도 - (입력고도 // 상승고도) //는 몫이다 한단계 올라가면 0.8도씩떨어짐으로 0.8*한다
#ex) 입력 고도가 180이면 60으로 나눈 몫 3이되고 0.8*3 =2.4 --> 180기온 29-2.4=26.6도가된다
if height % step != 0:# 몫이 0이 아닌경우 시행 ex)250 몫4 나머지 10
targetTemp -= stepTemp
#입력된 고도가 상승 단계로 나누어 떨어지지 않는 경우를 처리하기 위한 조건문
#고도가 60으로 나누어 떨어지는 경우에는 이미 해당 단계에서 기온 감소량이 적용되어서
#추가적인 감소량을 뺼 필요가 없지만 고도가 상승 단계로 나누어 떨어지지 않는 경우에는
#마지막 단계에서의 기온 감소량이 적용되지 않았으므로, 추가적 으로 감소량을 빼주어야한다.
#요약: 나누어떨어지지 않는 고도를 위해 if문으로 처리 해주는 것이다.
#targetTemp = baseTemp - (height // step) * 0.8 여기서 나누어떨어지지 않을떄 실행된다.
#ex1) 고도가 180이면 180나누기60 나머지 0이다 if문 실행 안한다 0.8을 따로뺴주지 않아도 된다.
#ex2) 고도가 250이면 250나누기 60 몫4 나머지 10이다.
#기온 감소량 0.8을 추가로 뺴준다. --> 29-3.2(몫)-0.8 =25
print('지면 온도: {}'.format(baseTemp))
print('고도 %d의 기온: %.2f도'% (height, targetTemp))
2번문제
197개의 빵과 152개의 우유를 17명의 학생한테 동일하게 나눠 준다고 할 때,
한 명의 학생이 갖게 되는 빵과 우유 개수를 구하고 남는 빵과 우유 개수를 출력하자.
#내풀이 (해설 강의랑 결과가 다르다)
bread = 197
milk = 152
student = 17
bread_student = bread // 17
milk_student = milk // 17
remaining_bread = bread - (bread_student*17)
remaining_milk = milk - (bread_student*17)
print('1인당 빵 갯수: %.2f , 1인당 우유 갯수 : %2.f '%(bread_student,milk_student))
print('1인당 빵 갯수: %.2f , 1인당 우유 갯수 : %2.f '%(bread_student,milk_student))
print('남는 빵의 갯수 %.2f'%remaining_bread)
print('남는 우유 갯수 %.2f'%remaining_milk)
##############################
#제로베이스 풀이
bread = 197
milk = 152
student = 17
print('학생 한명이 갖게 되는 빵 개수: {}'.format(bread // student))
print('학생 한명이 갖게 되는 우유 개수: {}'.format(milk // student))
print('남는 빵 개수: {}'.format(bread % student))
print('남는 우유 개수: {}'.format(milk % student))
1번 문제의 문제점은 지문 이해를 하지 못했다.
경험 부족인거 같다.
2번문제의경우
remaining_bread = bread - (bread_student17)
remaining_milk = milk - (bread_student17)
이부분이 정말쉽다. 저렇게 풀면 남은 개수의
빵과 우유가 나올줄 알았는데 엉뚱한 결과만 출력이 되었다.
1번문제
1.다음 내용을 참고해서 백신 접종 대상자를 구분하기 위한 프로그램을 만들어 보자.
19세 이하 또는 65세 이상 이면
출생 연도 끝자리에 따른 접종
그렇지 않으면
하반기 일정 확인
inputAge = int(input('나이 입력:'))
if inputAge <= 19 or inputAge >= 65:
endNum = int(input('출생 연도 끝자리 입력: '))
if endNum == 1 or endNum == 6:
print('월요일 접종 가능')
elif endNum == 2 or endNum == 7:
print('화요일 접종 가능')
elif endNum == 3 or endNum == 8:
print('수요일 접종 가능')
elif endNum == 4 or endNum == 9:
print('목요일 접종 가능')
elif endNum == 5 or endNum == 0:
print('금요일 접종 가능')
else:
print("하반기 일정 확인")
2번 문제
길이(mm)를 입력하면 inch로 환산하는 프로그램 만들어보자 (1mm= 0.39inch)
#내풀이
length_mm = int(input('길이(mm) 입력'))
inch = 0.39
total = length_mm *0.039
print('{}mm -> {}inch'.format(length_mm,total))
1번 문제의 경우 요일 별로 접종 변수를 어떻게 정해 주어야 할지몰라서
작성에 실패 했다.
2번 문제는 정답을 맞추었다! 정말 쉬운 문제였다. ㅎㅎㅎ...
1번 교통 과속 위반 프로그램을 반들어 보자
#내풀이
speed = int(input('속도입력 :'))
if speed < 50 :
print('안전속도 준수')
elif speed >50 :
print('안전속도 위반!! 과태료 50000원 부과 대상')
#강의
carSpeed = int(input('속도 입력: '))
limitSpeed = 50
if carSpeed > 50:
print('안전속도 위반!! 과태료 50,000원 부과 대상!!!')
else:
print('안전속도 준수!')
2번 문제 문자 메시지 길이에 따라 문자 요금이 결정되는 프로그램 만들어보자
#내풀이
message = input('메시지 입력:')
if len(message) <50 :
print('메시지 입력: {}'.format(message))
print('SMS 발생!!')
print('메시지 길이: {}'.format(len(message)))
print('메시지 발송 요금 : 50원 부과')
elif len(message) >=50 :
print('메시지 입력: {}'.format(message))
print('SMS 발생!!')
print('메시지 길이: {}'.format(len(message)))
print('메시지 발송 요금 : 100원 부과')
###################################
#강의
message = input('메시지 입력:')
lenMessage = len(message)
msgPrice = 50
if lenMessage <=50:
msgPrice = 50
print('SMS 발송!')
if lenMessage > 50:
msgPrice = 100
print('MMS 발송!!')
print('메시지 길이 :{}'.format(lenMessage))
print('메시지 발송 요금 :{}'.format(msgPrice))
시간이 조금 걸렸지만 크게 어렵지 않았다.
1번문제
국어,영어, 수학 ,과학 국사 점수를 입력하며 총점을 비롯한 각종 데이터가 출력되는
프로그램을 만들어보자.
-과목별 점수를 입력하면 총점, 평균, 편차를 출력한다.
평균은 다음과 같다.
(국어:85, 영어:82, 수학:89, 과학:75, 국사:94)
-각종 편차 데이터는 막대그래프로 시각화한다.
#풀다가 막힌 내코드(코드 작성 실패)
# kor, eng, math, sic, kor2 = map(int, input('국어, 영어 ,수학 ,과학 , 국사 점수입력: ').split())
#
# total = kor + eng + math + sic +kor2
# avr = (kor + eng + math + sic +kor2)/5
# deviations = avr - total
# print(deviations)
# # print('-' * 30)
# # print('총점 : {}, 평균:{}'.format(total,avr))
#강의 풀이
korAvg = 85; engAvg = 82; matAvg = 89
sciAvg = 75; hisAvg = 94
totalAvg = korAvg + engAvg + matAvg + sciAvg + hisAvg
avgAvg = int(totalAvg / 5)
korScore = int(input('국어 점수: '))
engScore = int(input('영어 점수: '))
matScore = int(input('수학 점수: '))
sciScore = int(input('과학 점수: '))
hisScore = int(input('국사 점수: '))
totalScore = korScore + engScore + matScore + sciScore + hisScore
avgScore = int(totalScore / 5)
korGap = korScore - korAvg
engGap = engScore - engAvg
matGap = matScore - matAvg
sciGap = sciScore - sciAvg
hisGap = hisScore - hisAvg
totalGap = totalScore - totalAvg
avgGap = avgScore - avgAvg
print('-'*60)
print('총점: {}({}), 평균: {}({})'.format(totalScore, totalGap, avgScore, avgGap))
print('국어: {} ({}), 영어: {}({}), 수학: {}({}), 과학: {}({}), 국사: {}({})'.format(
korScore, korGap, engScore, engGap, matScore,matGap,sciScore,sciGap,hisScore,hisGap
))
print('-' *60)
str = '+' if korGap > 0 else '-'
print('국어 편차: {}({})'.format(str * abs(korGap), korGap))
str2 = '+' if engGap > 0 else '-'
print('영어어 편차: {}({})'.format(str2 * abs(engGap), engGap))
str3 = '+' if matGap > 0 else '-'
print('수학 편차: {}({})'.format(str3 * abs(matGap), matGap))
str4 = '+' if sciGap > 0 else '-'
print('과학 편차: {}({})'.format(str4 * abs(sciGap), sciGap))
str5 = '+' if hisGap > 0 else '-'
print('수학 편차: {}({})'.format(str5 * abs(matGap), matGap))
str6 = '+' if totalGap > 0 else '-'
print('총점 편차: {}({})'.format(str5 * abs(totalGap), totalGap))
str7 = '+' if avgGap > 0 else '-'
print('총점 편차: {}({})'.format(str5 * abs(avgGap), totalGap))
print('-' * 60)
배우진 않았지만 과목들을 한꺼번에 입력할려고
map()함수를 작성했다. 표준편차라는 개념에대해
이해가 부족해서 코드 작성에 어려움이 있었다.
1번문제
난수를 이용해서 홀/짝 게임을 만들어보자
홀/짝 선택: 1.홀 2.짝 1
실패!! 짝수!!!
홀/짝 선택: 1.홀 2.짝 1
빙고!! 홀수!!
#내풀이
import random
comNum = random.randint(1,2) #1부터 2사이의 난수 생성
userSelect= int(input('홀/짝 선택: 1. 홀\t 2. 짝'))
if userSelect == 1:
if comNum ==1:
print('빙고!!홀수!!')
elif comNum ==2:
print('실패!! 짝쑤!!')
if userSelect == 2:
if comNum ==1:
print('빙고 짝수')
elif comNum ==2:
print('실패!! 홀수!!')
#############################
print('--------------------------------------------')
#제로베이스 풀이
import random
comNum = random.randint(1, 2)
userSelect = int(input('홀/짝 선택: 1.홀\t 2. 짝'))
if comNum ==1 and userSelect == 1:
print('빙고! 홀수!')
elif comNum == 2 and userSelect == 2:
print('빙고 짝수')
elif comNum == 1 and userSelect ==2:
print('실패!! 홀수!!')
elif comNum ==2 and userSelect ==1:
print('실패! 짝수!')
2번문제
난수를 이용해서 가위, 바위, 보 게임을 만들어보자
가위,바위,보 선택: 1. 가위 2.바위 3.보 3
컴퓨터: 승, 유저 :패
컴퓨터: 1 , 유저: 3
가위,바위,보 선택: 1. 가위 2.바위 3.보 2
컴퓨터: 패, 유저: 승
컴퓨터: 1, 유저: 2
import random
cpu = random.randint(1,3)
user_select= int(input('1.가위, 2.바위, 3.보 선택 : '))
#유저가 가위
if user_select ==1 :
if cpu == 1:
print('컴퓨터: 패, 유저: 패')
print('cpu:{}, 유저:{}'.format(cpu,user_select))
elif cpu == 2:
print('컴퓨터: 승, 유저 :패')
print('cpu:{}, 유저:{}'.format(cpu, user_select))
elif cpu == 3:
print('컴퓨터:패, 유저 :승')
print('cpu:{}, 유저:{}'.format(cpu, user_select))
#유저가 바위
if user_select ==2 :
if cpu == 1:
print('컴퓨터:패, 유저:승')
print('cpu:{}, 유저:{}'.format(cpu, user_select))
elif cpu ==2:
print('컴퓨터:패, 유저 : 패')
print('cpu:{}, 유저:{}'.format(cpu, user_select))
elif cpu == 3:
print('컴퓨터:승, 유저 : 패')
print('cpu:{}, 유저:{}'.format(cpu, user_select))
# 유저가 '보'
if user_select == 3:
if cpu == 1:
print('컴퓨터:승, 유저:패')
print('cpu:{}, 유저:{}'.format(cpu, user_select))
elif cpu == 2:
print('컴퓨터:패, 유저 : 승')
print('cpu:{}, 유저:{}'.format(cpu, user_select))
elif cpu == 3:
print('컴퓨터:패, 유저 : 패')
print('cpu:{}, 유저:{}'.format(cpu, user_select))
#강의 풀이
import random
comNumber =random.randint(1, 3)
userNumber = int(input('가위, 바위, 보 선택: 1.가위\t 2.바위\t 3.보'))
if(comNumber ==1 and userNumber ==2) or \
(comNumber == 2 and userNumber == 3) or \
(comNumber == 3 and userNumber ==1):
print('컴퓨터: 패, 유저: 승')
elif comNumber == userNumber :
print('무승부')
else:
print('컴퓨터: 승, 유저: 패')
print('컴퓨터: {}, 유저 {}'.format(comNumber, userNumber))
정말 오래동안 풀었다. 2문제다 정답을
맞추었다. 자신감이 생기게 해준 문제들이었다!
코드를 좀더 간결하게 만들고 싶다.
select = int(input('1.가정용, 2.대중탕용 3.공업용 : '))
use = int(input('사용량 입력:'))
home = 540
if select == 1:
print('=' * 25)
print('상수도 요금표')
print('-' * 20)
total = use * home
formatted_total = "{:,}".format(total) # 콤마를 추가하여 숫자를 형식화
print('사용량 : 요금')
print('{} : {}'.format(use, formatted_total))
print('=' * 25)
elif select == 2 and use < 50:
print('=' * 25)
print('상수도 요금표')
print('-' * 20)
total2 = use * 820
formatted_total2 = "{:,}".format(total2)
print('사용량 : 요금')
print('{} : {}'.format(use, formatted_total2))
print('=' * 25)
elif select == 2 and use >50 and use <=300:
print('=' * 25)
print('상수도 요금표')
print('-' * 20)
total3 = use * 1920
formatted_total3 = "{:,}".format(total3)
print('사용량 : 요금')
print('{} : {}'.format( formatted_total3))
print('=' * 25)
elif select == 2 and use > 300:
print('=' * 25)
print('상수도 요금표')
print('-' * 20)
total4 = use * 2400
formatted_total4 = "{:,}".format(total4)
print('사용량 : 요금')
print('{} : {}'.format(use, formatted_total4))
print('=' * 25)
elif select == 3 and use < 500:
print('=' * 25)
print('상수도 요금표')
print('-' * 20)
total5 = use * 240
formatted_total5 = "{:,}".format(total5)
print('사용량 : 요금')
print('{} : {}'.format(use, formatted_total5))
print('=' * 25)
elif select == 3 and use > 500:
print('=' * 25)
print('상수도 요금표')
print('-' * 20)
total6 = use * 470
formatted_total6 = "{:,}".format(total6)
print('사용량 : 요금')
print('{} : {}'.format(use, formatted_total6))
print('=' * 25)
#강의 풀이
#강의 풀이
part = int(input('업종 선택(1.가정용 2.대중탕용 3.공업용) : '))
useWater = int(input('사용량 입력:'))
unitPrice = 0
if part ==1:
unitPrice = 540
pass
elif part ==2:
if useWater <=50:
unitPrice = 820
elif useWater > 50 and useWater <= 300:
unitPrice = 1920
elif useWater > 300:
unitPrice = 2400
pass
elif part ==3:
if useWater <= 500:
unitPrice =240
pass
else:
unitPrice =470
print('='*30)
print('상수도 요금표')
print('-'*30)
print('사용량 : 요금')
uerPrice = useWater * unitPrice
print('{} : {}원'.format(useWater, uerPrice))
정답을 맞추긴 했지만 코드가 정말 지저분하다.
1번문제
미세먼지 비상저감조치로 차량 운행제한 프로그램을 다음 내용에 맞게 만들어 보자
-미세먼지 측정 수치가 150이하면 차량 5부제 실시
-미세먼지 측정 수치가 150을 초과하면 차량 2부제 실시
-차량 2부제를 실시하더라도 영업용차량은 5부제 실시
-미세먼지 수치, 차량종류, 차량번호 입력하면 운행 가능 여부 출력한다
import datetime
today = datetime.datetime.today()
day = today.day
limitDust = 150
dustNum = int(input('미세먼지 수치 입력:'))
carType = int(input('차량 종류 선택: 1. 승용차 2. 영업용차'))
carNumber = int(input('차량번호 입력: '))
print('-'*30)
print(today)
print('-'*30)
if dustNum > limitDust and carType == 1:
if (day % 2) == (carNumber % 2): #2부제는 짝수 홀수를 본다.
print('차량 2부제 적용')
print('차량 2부제로 금일 운행제한 대상 차량입니다.')
else:
print('금일 운행 가능합니다.')
if dustNum > limitDust and carType ==2:
if (day % 5) == (carNumber % 5): # 5부제 라서 % 5사용
print('차량 5부제 적용')
print('차량 5부제로 금일 운행제한 대상 차량입니다.')
else:
print('금일 운행 가능합니다.')
#150이하인경우
if dustNum <= limitDust :
if (day % 5) == (carNumber % 5): #
print('차량 5부제 적용')
print('차량 5부제로 금일 운행제한 대상 차량입니다.')
else:
print('금일 운행 가능합니다.')
print('-'*30)
차량 2부제, 5부제라고 적혀있길래 지문 이해를 하질 못했다.
네이버에 2부제, 5부제 요일을 찾아 보기도 했다.
문제 지문 이해가 부족했던 문제였다.
1번문제
PC에서 난수를 발생하면 사용자가 맞추는 게임을 만들어보자
-PC가 난수(1~1000)를 발생하면 사용자가 숫자(정수)를 입력한다.
-사용자가 난수를 맞추면 게임이 종료된다.
-만약,못 맞추게 되면 난수와 사용자 숫자의 크고 작음을 출력한 후
-최종적으로 사용자가 시도한 횟수를 출력한다.
#내풀이(문제 풀이 실패!)
import random
num_R = random.randint(1,1000)
user = int(input('1에서 1000까지의 정수 입력:'))
if user > num_R :
print('난수가 작다')
elif user < num_R:
print('난수가 크다.')
elif user == num_R :
print('빙고!')
break
################
#강의풀이
import random
rNum = random.randint(1,1000)
tryCount = 0
gameFlag = True
while gameFlag:
tryCount +=1 #게임을 반복해야하기 때문에 구현
pNum = int(input('1에서 1000까지의 정수 입력:'))
if rNum == pNum:
print('빙고!')
gameFlag = False
else:
if rNum > pNum:
print('난수가 크다')
else:
print('난수가 작다')
print('난수: {}, 시도 횟수: {}'.format(rNum, tryCount))
2번문제
실내온도를 입력하면 스마트에어컨 상태가 자동으로 설정되는 프로그램을 만들어보기
on = int(input('실내온도 입력:'))
if on < 18:
print('에어컨: OFF!!')
elif on >=18 and on <=22 :
print('에어컨: 매우 약!!')
elif on >22 and on <=24 :
print('에어컨: 약!!')
elif on >24 and on <=26 :
print('에어컨: 중!!')
elif on >26 and on <=28 :
print('에어컨: 매우 강!!')
elif on >28 :
print('매우 강!!')
1번 문제의 경우
이전 조건문 문제에선 while문이 사용이 없어서
while문을 활용할 생각을 못했다...
while문이 정말 약하다. 어렵다
2번 문제는.... 너무 쉬웠다!
1번
1부터 100까지 정수 중 십의자리와 일의자리에 대해 각각/ 홀/짝수를 구분하는 프로그램을 만들어보기
#내가 시도한부분
# for i in range(1, 101):
# if i % 2 == 0:
# print('[{}]: 짝수!'.format(i))
# elif i % 2 == 1:
# print('[{}]: 홀수!'.format(i))
#강의 해설
for i in range(1, 101):
# 1~9까지 구현
if i <= 9:
if i % 2 == 0:
print('[{}]: 짝수!'.format(i))
else:
print('[{}]: 홀수!'.format(i))
else: # 10의자리 구현
num10 = i // 10 # 10의자리
#나눗셈을 하고 소수점 이하를 버린 몫을 반환한다.
# i가 45 이면 10 나누셈을 해서 소수점을 버리고 4가된다.(4.5에서 4)
num1 = i % 10 # 1의 자리
# i가 50이면 5 i가 40이면 4
result10 = ''
if num10 % 2 == 0:
result10 = '짝수'
else:
result10 = '홀수'
#1의자리 구현
result1 = '0' #10,20,30,40,50,60,70,80,90,100일떄 일의자리 :0을 구현해야 함으로
# num1(일의자리)이 0이 아닌 경우 if 조건문으로 홀,짝 인지 판단한다.
#num1 이 0인 경우 밑에 if문을 실행하지않고 0이 그대로 유지되어
#10,20,30 에서의 일의자리:0 으로 출력된다.
if num1 != 0:
if num1 % 2 == 0:
result1 = '짝수'
else:
result1 = '홀수'
print('[{}] 십의자리: {}, 일의자리: {}'.format(i, result10, result1))
1번
1부터 사용자가 입력한 정수까지의합, 홀수의 합, 짝수의 합 그리고 팩토리얼을 출력하는 프로그램을 만들어보자
#내풀이 (팩토리얼 구현 못함)
num1 = int(input('정수 입력:'))
sum = 0
total1 = 0 # 홀수 합 결과 변수 초기화
total2 = 0 # 짝수 합 결과 변수 초기화
for i in range(1, num1+1):
sum += i
if i % 2 == 1:
total1 += i # 홀수일 때만 합산
elif i %2 ==0:
total2 +=i #짝수 일때만 합산
print('홀수 합 결과: {}'.format(total1))
print('짝수 합 결과: {}'.format(total2))
print('합 결과: {}'.format(sum))
#강의 풀이
fNum = int(input('정수 입력:'))
addSum = 0
for i in range(1, (fNum + 1)):
addSum +=i
addSumFormated = format(addSum, ',')
print('합 결과: {}'.format(addSumFormated))
#홀수
oddSum = 0
for i in range(1, (fNum + 1)):
if i % 2!=0:
oddSum +=i
oddSumFormated = format(oddSum, ',')
print('홀수합 결과: {}'.format(oddSumFormated))
evenSum = 0
for i in range(1, (fNum + 1)):
if i % 2==0:
oddSum +=i
evenSumFormated = format(oddSum, ',')
print('홀수합 결과: {}'.format(evenSumFormated))
#팩토리얼
factorialResult = 1
for i in range(1, (fNum + 1)):
factorialResult *=i
print('팩토리얼 결과: {}'.format( factorialResult))
for i in range(1, 6): #출력할 행의 갯수 이다
for j in range(i): # 각 행마다 출력될 *의 개수를 제어
print('*', end='')
print()#객체
# 2번문제
for i1 in range(1, 6):
for i2 in range(6 - i1 -1):
print(' ', end = '') #' ' 경우*을 우측 정렬 하게 한다. -->''의 경우 좌측 정렬
#공백을 나타내는 띄어쓰기 이다.
for i3 in range(i1):
print('*', end='')
print()
#3 번 문제 (내풀이 강의 풀이랑 같다.)
for i in range(5,0, -1): #출력할 행의 갯수 이다
for j in range(i): # 각 행마다 출력될 *의 개수를 제어
print('*', end='')
print()#객체
#4 번 문제
for i in range(5,0, -1): #출력할 행의 갯수 이다
for i2 in range(5 - i ):
print(' ', end = '')
for j in range(i): #출력 부분
print('*',end='')
print()
#5 번 문제
for i in range(1, 10):
if i < 5:
for j in range(i):
print('*', end='')
else:
for j in range(10 - i): #10에서 i를 감소한다.
print('*', end='')
print()
1번
집 앞 버스 정류장에서 학교까지 가는 버스 A,B,C 의 운행정보가 다음과 같을 때, 2대 이상의 버스가 정차하는 시간대를 출력해보자
busA = 15
busB = 13
busC = 8
totalMin = 60 * 17 # 하루 17시간 운행
for i in range(totalMin + 1): #하루 운행시간
if i< 20 or i > (totalMin - 60): #6시부터 출발하는것을 분류하기 위해 i< 20
#C버스가 A,B버스보다 1시간 일찍 운행 종료
if i % busA ==0 and i % busB == 0:
#busA와 busB의 운행 주기에 맞게 정수를 나누어지는 경우 확인
print('busA와 busB 동시 정차!!', end='')
hour = 6 + i // 60
min = i % 60
print('\t{}:{}'.format(hour, min))
else:
if i % busA == 0 and i % busB == 0:
print('busA와 busB 동시 정차!!', end='')
hour = 6 + i // 60
min = i % 60
print('\t{}:{}'.format(hour, min))
elif i % busA == 0 and i % busC == 0:
print('busA와 busC 동시 정차!!', end='')
hour = 6 + i // 60
min = i % 60
print('\t{}:{}'.format(hour, min))
elif i % busB == 0 and i % busC == 0:
print('busB와 busC 동시 정차!!', end='')
hour = 6 + i // 60
min = i % 60
print('\t{}:{}'.format(hour, min))
1번
톱니가 각각 n1개와 n2개의 톱니바퀴가 서로 맞물려 회전할 때, 회전을 시작한 후 처음 맞물린 톱니가 최초로 다시 만나게 될 때까지의 톱니의 수와 각각의 바퀴 회전수를 출력해보자. (단, n2는 n1보다 크다.)
62_반복문(05)
#톱니가 각각 n1개와 n2개의 톱니바퀴가 서로 맞물려 회전할 때, 회전을 시작한 후 처음
맞물린 톱니가 최초로 다시 만나게 될 떄까지의 톱니의 수와 각각의 바퀴 회전수를
출력해보자. (단, n2는 n1보다 크다.)
gearATCnt = int(input('GearA 톱니수 입력:'))
gearBTCnt = int(input('GearB 톱니수 입력:'))
gearA = 0
gearB = 0
leastNum = 0
flag = True
while flag:
if gearA != 0: #0은 의미가 없으므로 제외
if gearA != leastNum: #leastNum은 최소공배수이다.
#최소 공배수가 아니라면 gearA 에 gearATCnt를 더해주어 다음 회전 횟수를 꼐산한다.
gearA += gearATCnt
else: #최소 공배수와 같은 경우를 처리한다.
flag = False #공배수면 종료
else:
gearA += gearATCnt
if gearB != 0 and gearB % gearATCnt == 0:
#gearB % gearATCnt == 0: gearB가 gearATCnt의 배수인지 확인
leastNum = gearB #위 조건이 True이면 laeastNum에 gearB설정
else:
gearB += gearBTCnt
print('최초 만나는 톱니수(최소공배수): {}톱니'.format(leastNum))
print('gearA 회전수: {}회전'.format(int(leastNum / gearATCnt)))
print('gearB 회전수: {}회전'.format(int(leastNum / gearBTCnt)))
1번
윤년 계산기를 만들어보자
for year in range(2021, (2021+101)):
if (year % 4==0 and year % 100 != 0) or (year % 400 ==0):
print('{}년: 윤년!!'.format(year))
else:
print('{}년: 평년!'.format(year))