문제 16
문제:
리스트 컴프리헨션을 사용하여 리스트의 각 홀수를 제곱하십시오. 리스트는 쉼표로 구분된 숫자 시퀀스로 입력됩니다. >다음과 같은 입력이 프로그램에 제공된다고 가정합니다:
1,2,3,4,5,6,7,8,9
그러면 출력은 다음과 같아야 합니다:
1,9,25,49,81
힌트:
질문에 입력 데이터가 제공되는 경우 콘솔 입력으로 간주해야 합니다.
주요 저자 솔루션: 파이썬 2
## 저자의 솔루션이 정확하지 않아 여기에 포함하지 않았습니다.
내 솔루션: 파이썬 3
lst = [str(int(i)**2) for i in input().split(',') if int(i) % 2]
print(",".join(lst))
'''솔루션 작성자: shagun'''
# 홀수 제곱
lst = input().split(',') # 쉼표 위치에서 분할하고 리스트에 설정합니다.
seq = []
lst = [int(i) for i in lst] # 문자열을 정수로 변환합니다.
for i in lst:
if i%2 != 0:
i = i*i
seq.append(i)
seq = [str(i) for i in seq] # join 연산을 적용할 수 있도록 모든 정수를 문자열로 변환합니다.
print(",".join(seq))
'''솔루션 작성자: Jack'''
seq = input().split(',')
lst = [int(i) for i in seq]
def flt(i): # 필터 함수 정의
return i % 2 != 0
result_l = [str(i * i) for i in filter(flt,lst)]
print(",".join(result_l))
테스트 케이스와 솔루션에 실수가 있었는데 @dwedigital의 도움으로 알림을 받고 수정했습니다. 그에게 진심으로 감사합니다.
문제 17
문제:
콘솔 입력에서 트랜잭션 로그를 기반으로 은행 계좌의 순 금액을 계산하는 프로그램을 작성하십시오. 트랜잭션 로그 형식은 다음과 같습니다:
D 100
W 200
- D는 입금을 의미하고 W는 출금을 의미합니다.
다음과 같은 입력이 프로그램에 제공된다고 가정합니다:
D 300
D 300
W 200
D 100
그러면 출력은 다음과 같아야 합니다:
500
힌트:
질문에 입력 데이터가 제공되는 경우 콘솔 입력으로 간주해야 합니다.
주요 저자 솔루션: 파이썬 2
import sys
netAmount = 0
while True:
s = raw_input()
if not s:
break
values = s.split(" ")
operation = values[0]
amount = int(values[1])
if operation=="D":
netAmount+=amount
elif operation=="W":
netAmount-=amount
else:
pass
print netAmount
내 솔루션: 파이썬 3
total = 0
while True:
s = input().split()
if not s: # 문자열이 비어 있으면 중단합니다.
break
cm,num = map(str,s) # 두 개의 입력이 문자열 데이터 유형으로 cm과 num에 분배됩니다.
if cm=='D':
total+=int(num)
if cm=='W':
total-=int(num)
print(total)
'''솔루션 작성자: leonedott'''
lst = []
while True:
x = input()
if len(x)==0:
break
lst.append(x)
balance = 0
for item in lst:
if 'D' in item:
balance += int(item.strip('D '))
if 'W' in item:
balance -= int(item.strip('W '))
print(balance)
'''솔루션 작성자: AlexanderSro'''
account = 0
while True:
action = input("입금/출금/잔액/종료? D/W/B/Q: ").lower()
if action == "d":
deposit = input("얼마나 입금하시겠습니까? ")
account = account + int(deposit)
elif action == "w":
withdrow = input("얼마나 출금하시겠습니까? ")
account = account - int(withdrow)
elif action == "b":
print(account)
else:
quit()
'''솔루션 작성자: ShalomPrinz
'''
lines = []
while True:
loopInput = input()
if loopInput == "done": # "done" 입력 시 종료
break
else:
lines.append(loopInput)
lst = list(int(i[2:]) if i[0] == 'D' else -int(i[2:]) for i in lines)
print(sum(lst))
'''솔루션 작성자: popomaticbubble
'''
transactions = []
while True:
text = input("> ")
if text:
text = text.strip('D ')
text = text.replace('W ', '-')
transactions.append(text)
else:
break
transactions = (int(i) for i in transactions)
balance = sum(transactions)
print(f"잔액은 {balance}입니다.")
'''솔루션 작성자: ChichiLovesDonkeys
'''
money = 0
while 1:
trans = input().split(' ')
if trans[0] == 'D':
money = money + int(trans[1])
elif trans[0] == 'W':
money = money - int(trans[1])
elif input() == '': # 빈 입력 시 종료
break
print(f'현재 잔액은: {money}입니다.')