문제 출처 - 제로베이스 데이터 스쿨
cNum = random.randint(1,3)
pNum = int(input('선택 - 1.가위 \t 2.바위 \t 3.보'))
if (cNum ==1 and pNum ==2) or (cNum==2 and pNum==3) or (cNum ==3 and pNum ==1):
print('com defeat, player win')
elif cNum == pNum:
print('draw')
else:
print('com win, player defeat')
print('com : {}, player : {}'.format(cNum,pNum))
#출력
선택 - 1.가위 2.바위 3.보2
com defeat, player win
com : 1, player : 2
💡포인트는 첫 if문이 었던 것 같다. 그 외에는 어렵지 않았다.
import datetime
dust = int(input('enter dust : '))
type = int(input('enter car type 1.comfort \t 2.business'))
cNum = int(input('enter car number : '))
curDate = datetime.datetime.now()
day = datetime.datetime.now().day
print('-' * 30)
print(curDate)
print('-' * 30)
if dust > 150 and type == 1:
if day % 2 == cNum % 2:
print('2부제')
print('운행제한')
else:
print('운행가능')
if dust > 150 and type == 2:
if day % 5 == cNum % 5:
print('5부제')
print('운행제한')
else:
print('운행가능')
if dust <= 150 :
if day % 5 == cNum % 5:
print('5부제')
print('운행제한')
else:
print('운행가능')
print('-' * 30)
#출력
enter dust : 155
enter car type 1.comfort 2.business1
enter car number : 7456
------------------------------
2023-06-14 00:43:35.849013
------------------------------
2부제
운행제한
------------------------------
💡에러가 나서 헤맸다. 못찾아서 구글링 해보니 'IndentationError : 들여쓰기 에러' 라는 것을 알게되었다. datetime 모듈의 이용법도 조금 더 알게 되었다.
import random
rNum = random.randint(1,1000)
tryCount = 0
gameFlag = True
while gameFlag:
tryCount += 1
pNum = int(input('enter 1~1000 Number : '))
if rNum == pNum:
print('correct!')
gameFlag = False #
else:
if rNum > pNum:
print('Num is bigger')
else:
print('Num is smaller')
print('randomNumber : {}, tryCount : {}'.format(rNum, tryCount))
#출력
enter 1~1000 Number : 500
Num is smaller
enter 1~1000 Number : 250
Num is smaller
enter 1~1000 Number : 125
Num is bigger
enter 1~1000 Number : 187
Num is bigger
enter 1~1000 Number : 219
Num is smaller
enter 1~1000 Number : 203
Num is bigger
enter 1~1000 Number : 211
Num is bigger
enter 1~1000 Number : 215
Num is bigger
enter 1~1000 Number : 217
Num is smaller
enter 1~1000 Number : 216
correct!
randomNumber : 216, tryCount : 10
💡'tryCount'를 어디쯤에서 연산-할당 해야할 지를 고민했던 것 같다. 알고나니 이해가 쉬웠는데, 막상 고민할 때는 어려웠다.
for i in range(1,101):
if i < 10:
if i % 2 == 0:
print('[{}] : 짝수!'.format(i))
else:
print('[{}] : 홀수!'.format(i))
else:
num10 = i // 10
num1 = i % 10
result10 = ''
if num10 % 2 ==0:
result10 = '짝수!'
else :
result10 = '홀수!'
result1 = ''
if num1 != 0 and num1 % 2 == 0:
result1 = '짝수!'
elif num1 == 0:
result1 = '0'
else:
result1 = '홀수!'
print('[{}] 십의자리 : {}, 일의자리 : {}'.format(i, result10, result1))
#출력
[1] : 홀수!
[2] : 짝수!
[3] : 홀수!
[4] : 짝수!
[5] : 홀수!
[6] : 짝수!
[7] : 홀수!
[8] : 짝수!
[9] : 홀수!
[10] 십의자리 : 홀수!, 일의자리 : 0
[11] 십의자리 : 홀수!, 일의자리 : 홀수!
[12] 십의자리 : 홀수!, 일의자리 : 짝수!
[13] 십의자리 : 홀수!, 일의자리 : 홀수!
[14] 십의자리 : 홀수!, 일의자리 : 짝수!
[15] 십의자리 : 홀수!, 일의자리 : 홀수!
[16] 십의자리 : 홀수!, 일의자리 : 짝수!
[17] 십의자리 : 홀수!, 일의자리 : 홀수!
[18] 십의자리 : 홀수!, 일의자리 : 짝수!
[19] 십의자리 : 홀수!, 일의자리 : 홀수!
[20] 십의자리 : 짝수!, 일의자리 : 0
[21] 십의자리 : 짝수!, 일의자리 : 홀수!
[22] 십의자리 : 짝수!, 일의자리 : 짝수!
[23] 십의자리 : 짝수!, 일의자리 : 홀수!
[24] 십의자리 : 짝수!, 일의자리 : 짝수!
[25] 십의자리 : 짝수!, 일의자리 : 홀수!
[26] 십의자리 : 짝수!, 일의자리 : 짝수!
[27] 십의자리 : 짝수!, 일의자리 : 홀수!
[28] 십의자리 : 짝수!, 일의자리 : 짝수!
[29] 십의자리 : 짝수!, 일의자리 : 홀수!
[30] 십의자리 : 홀수!, 일의자리 : 0
[31] 십의자리 : 홀수!, 일의자리 : 홀수!
[32] 십의자리 : 홀수!, 일의자리 : 짝수!
[33] 십의자리 : 홀수!, 일의자리 : 홀수!
[34] 십의자리 : 홀수!, 일의자리 : 짝수!
[35] 십의자리 : 홀수!, 일의자리 : 홀수!
[36] 십의자리 : 홀수!, 일의자리 : 짝수!
[37] 십의자리 : 홀수!, 일의자리 : 홀수!
[38] 십의자리 : 홀수!, 일의자리 : 짝수!
[39] 십의자리 : 홀수!, 일의자리 : 홀수!
[40] 십의자리 : 짝수!, 일의자리 : 0
[41] 십의자리 : 짝수!, 일의자리 : 홀수!
[42] 십의자리 : 짝수!, 일의자리 : 짝수!
[43] 십의자리 : 짝수!, 일의자리 : 홀수!
[44] 십의자리 : 짝수!, 일의자리 : 짝수!
[45] 십의자리 : 짝수!, 일의자리 : 홀수!
[46] 십의자리 : 짝수!, 일의자리 : 짝수!
[47] 십의자리 : 짝수!, 일의자리 : 홀수!
[48] 십의자리 : 짝수!, 일의자리 : 짝수!
[49] 십의자리 : 짝수!, 일의자리 : 홀수!
[50] 십의자리 : 홀수!, 일의자리 : 0
[51] 십의자리 : 홀수!, 일의자리 : 홀수!
[52] 십의자리 : 홀수!, 일의자리 : 짝수!
[53] 십의자리 : 홀수!, 일의자리 : 홀수!
[54] 십의자리 : 홀수!, 일의자리 : 짝수!
[55] 십의자리 : 홀수!, 일의자리 : 홀수!
[56] 십의자리 : 홀수!, 일의자리 : 짝수!
[57] 십의자리 : 홀수!, 일의자리 : 홀수!
[58] 십의자리 : 홀수!, 일의자리 : 짝수!
[59] 십의자리 : 홀수!, 일의자리 : 홀수!
[60] 십의자리 : 짝수!, 일의자리 : 0
[61] 십의자리 : 짝수!, 일의자리 : 홀수!
[62] 십의자리 : 짝수!, 일의자리 : 짝수!
[63] 십의자리 : 짝수!, 일의자리 : 홀수!
[64] 십의자리 : 짝수!, 일의자리 : 짝수!
[65] 십의자리 : 짝수!, 일의자리 : 홀수!
[66] 십의자리 : 짝수!, 일의자리 : 짝수!
[67] 십의자리 : 짝수!, 일의자리 : 홀수!
[68] 십의자리 : 짝수!, 일의자리 : 짝수!
[69] 십의자리 : 짝수!, 일의자리 : 홀수!
[70] 십의자리 : 홀수!, 일의자리 : 0
[71] 십의자리 : 홀수!, 일의자리 : 홀수!
[72] 십의자리 : 홀수!, 일의자리 : 짝수!
[73] 십의자리 : 홀수!, 일의자리 : 홀수!
[74] 십의자리 : 홀수!, 일의자리 : 짝수!
[75] 십의자리 : 홀수!, 일의자리 : 홀수!
[76] 십의자리 : 홀수!, 일의자리 : 짝수!
[77] 십의자리 : 홀수!, 일의자리 : 홀수!
[78] 십의자리 : 홀수!, 일의자리 : 짝수!
[79] 십의자리 : 홀수!, 일의자리 : 홀수!
[80] 십의자리 : 짝수!, 일의자리 : 0
[81] 십의자리 : 짝수!, 일의자리 : 홀수!
[82] 십의자리 : 짝수!, 일의자리 : 짝수!
[83] 십의자리 : 짝수!, 일의자리 : 홀수!
[84] 십의자리 : 짝수!, 일의자리 : 짝수!
[85] 십의자리 : 짝수!, 일의자리 : 홀수!
[86] 십의자리 : 짝수!, 일의자리 : 짝수!
[87] 십의자리 : 짝수!, 일의자리 : 홀수!
[88] 십의자리 : 짝수!, 일의자리 : 짝수!
[89] 십의자리 : 짝수!, 일의자리 : 홀수!
[90] 십의자리 : 홀수!, 일의자리 : 0
[91] 십의자리 : 홀수!, 일의자리 : 홀수!
[92] 십의자리 : 홀수!, 일의자리 : 짝수!
[93] 십의자리 : 홀수!, 일의자리 : 홀수!
[94] 십의자리 : 홀수!, 일의자리 : 짝수!
[95] 십의자리 : 홀수!, 일의자리 : 홀수!
[96] 십의자리 : 홀수!, 일의자리 : 짝수!
[97] 십의자리 : 홀수!, 일의자리 : 홀수!
[98] 십의자리 : 홀수!, 일의자리 : 짝수!
[99] 십의자리 : 홀수!, 일의자리 : 홀수!
[100] 십의자리 : 짝수!, 일의자리 : 0
💡
1. 반복시 조건을 한자리 수와 두자리 수를 나누어서 조건을 걸어주는 것.
2. 'result10' , 'result1' 변수를 만들어서 각각 출력해주는 것.
3. 0은 짝수가 아닌 '0'으로 간주할 때 수정을 주는 것.
세가지 포안트가 어려웠고 고민하였다.
fNum = int(input('press int : '))
addSum = 0
for i in range(1, (fNum+1)):
addSum += i
addSumFormated = format(addSum, ',')
print('Sum : {}'.format(addSumFormated))
oddSum = 0
for i in range(1, (fNum+1)):
if i % 2 != 0:
oddSum += i
oddSumFormated = format(oddSum, ',')
print('Odd Sum : {}'.format(oddSumFormated))
evenSum = 0
for i in range(1, (fNum+1)):
if i % 2 == 0:
evenSum += i
evenSumFormated = format(evenSum, ',')
print('even Sum : {}'.format(evenSumFormated))
factorialResult = 1
for i in range(1, (fNum+1)):
factorialResult *= i
factorialResultFormated = format(factorialResult, ',')
print('Factorial Result : {}'.format(factorialResultFormated))
#출력
press int : 10
Sum : 55
Odd Sum : 25
even Sum : 30
Factorial Result : 3,628,800
💡합을 구하는 것은 쉬웠는데, 이상하게 팩토리얼은 어렵게 느껴졌다. 오히려 더 쉬웠어야 했는데.. 문제를 풀기 전에 미리 겁을 먹는 것이 있는 것 같다.
#1
for i in range(1,6):
for j in range(i):
print('*', end='')
print()
#1+5
for i in range(1,6):
for j in range(6-i,1,-1):
print('*', end='')
print()
print('-'*10)
#5
for i in range(1,10):
if i < 6 :
for j in range(i):
print('*', end="")
else:
for j in range(10-i):
print('*', end="")
print()
print('-'*10)
#3
for i in range(1,6):
for j in range(7-i,1,-1):
print('*', end='')
print()
print('-'*10)
#2
for i in range(1,6):
for j in range(5-i,0,-1):
print(' ', end='')
print('*'*i)
print('-'*10)
#6
for i in range(1,6):
for j in range(i):
print(' ', end='')
print('*')
print('-'*10)
#7
for i in range(1,6):
for j in range(5-i,0,-1):
print(' ', end='')
print('*')
print('-'*10)
#4
for i in range(1,6):
for j in range(0,i-1):
print(' ', end='')
print('*' * (6-i))
print('-'*10)
#8
for i in range(1,6):
print(' ' * (5-i) + '*' * (1+(2*(i-1))))
#출력
*
**
***
****
*****
****
***
**
*
----------
*
**
***
****
*****
****
***
**
*
----------
*****
****
***
**
*
----------
*
**
***
****
*****
----------
*
*
*
*
*
----------
*
*
*
*
*
----------
*****
****
***
**
*
----------
*
***
*****
*******
*********
💡몇개는 할만했고, 몇개는 출력해보며 어찌저찌 끼워맞췄고, 마지막 8번은 도저히 모르겠어서 찬스를 좀 썼다. 답을 알고보니 내가 접근자체를 잘못했던 것 같다.. 한 두문제에서 개행하는 print() 함수를 어디쯤 넣어야 할지도 고민을 했다.
busA = 15
busB = 13
busC = 8
total = 60 * 17
for i in range(total+1):
if i < 20 or i > (total-60):
if i % busA == 0 and i % busB == 0:
print('busA and busB, stop!', end='')
hour = 6 + (i // 60)
min = i % 60
print('\t{}시:{}분'.format(hour, min))
else:
if i % busA == 0 and i % busB == 0:
print('busA and busB, stop!', end='')
hour = 6 + (i // 60)
min = i % 60
print('\t{}시:{}분'.format(hour, min))
elif i % busA == 0 and i % busC == 0:
print('busA and busC, stop!', end='')
hour = 6 + (i // 60)
min = i % 60
print('\t{}시:{}분'.format(hour, min))
elif i % busB == 0 and i % busC == 0:
print('busB and busC, stop!', end='')
hour = 6 + (i // 60)
min = i % 60
print('\t{}시:{}분'.format(hour, min))
#출력
busA and busB, stop! 6시:0분
busB and busC, stop! 7시:44분
busA and busC, stop! 8시:0분
busA and busB, stop! 9시:15분
busB and busC, stop! 9시:28분
busA and busC, stop! 10시:0분
busB and busC, stop! 11시:12분
busA and busC, stop! 12시:0분
busA and busB, stop! 12시:30분
busB and busC, stop! 12시:56분
busA and busC, stop! 14시:0분
busB and busC, stop! 14시:40분
busA and busB, stop! 15시:45분
busA and busC, stop! 16시:0분
busB and busC, stop! 16시:24분
busA and busC, stop! 18시:0분
busB and busC, stop! 18시:8분
busA and busB, stop! 19시:0분
busB and busC, stop! 19시:52분
busA and busC, stop! 20시:0분
busB and busC, stop! 21시:36분
busA and busC, stop! 22시:0분
busA and busB, stop! 22시:15분
Process finished with exit code 0
💡C버스의 시간구간을 어떻게 조건을 줘서 분기해야하나 싶었는데, 운행시간 자체를 분으로 전부 환산해서 조건을 주는 방법이었다. 어려웠다.
gearACnt = int(input('enter gearA num : '))
gearBCnt = int(input('enter gearB num : '))
gearA = 0
gearB = 0
leastNum = 0
flag = True
while flag:
if gearA != 0:
if gearA != leastNum:
gearA += gearACnt
else:
flag = False
else:
gearA += gearACnt
if gearB != 0 and gearB % gearACnt == 0:
leastNum = gearB
else:
gearB += gearBCnt
#출력
enter gearA num : 7
enter gearB num : 12
최초 만나는 톱니수(최소공배수) : 84
gearA 회전 수 : 12
gearB 회전 수 : 7
💡최소공배수를 이용해야하기 때문에 'leastNum' 변수 설정만 하면 할만했던 것 같다. 근데 leastNum 변수를 만들 생각자체를 떠올리는 것이 어려웠다^^
year = int(input('enter year : '))
# if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0):
# print('{} : Yoon'.format(year))
# else:
# print('{} : Common'.format(year))
for year in range(2021, (2021+101)):
if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0):
print('{} : Yoon'.format(year))
else:
print('{} : Common'.format(year))
#출력
enter year : 2021
2021 : Common
2022 : Common
2023 : Common
2024 : Yoon
2025 : Common
2026 : Common
2027 : Common
2028 : Yoon
.
.
.
2114 : Common
2115 : Common
2116 : Yoon
2117 : Common
2118 : Common
2119 : Common
2120 : Yoon
2121 : Common
💡이 문제는 나중에 다시 봐야겠다. 풀어놓고 논리적으로 이해가 가지 않는다.