5355번: 화성 수학
겨울 방학에 달에 다녀온 상근이는 여름 방학 때는 화성에 갔다 올 예정이다. (3996번) 화성에서는 지구와는 조금 다른 연산자 @, %, #을 사용한다. @는 3을 곱하고, %는 5를 더하며, #는 7을 빼는 연산
www.acmicpc.net
풀이
첫째 줄에는 테스트 케이스의 수를 입력해야 한다.
그 다음 줄에는 입력한 숫자(화성 수학 식의 가장 앞에 수)와 연산자가 나와야 한다. (@는 *3, %는 +5, #은 -7)
화성 수학 식의 가장 앞에 수는 정수이거나 소수점 첫째 자리까지 주어진다.
계산 결과는 소수점 둘째 자리까지 출력해야 한다.
테스트 케이스(T)의 수를 입력하고 그만큼 입력해야 하기 때문에
T = int(input())
for i in range(T):
그 다음 화성 수학 식의 가장 앞에 수를 포함해서, 연산자까지 한 줄에 받기 위해서 리스트(M)로 묶어준다.
연산자는 str이고, 화성 수학 식의 가장 앞에 수만 수로 바꿔주면 되니 일단 str로 잡는다.
M = list(map(str, input().split())
화성 수학 식의 가장 앞에 수(E)는 리스트의 가장 앞에 수이기 때문에
M[0] (리스트 M의 0번째 인덱스 = 1번째 요소)라고 볼 수 있고,
정수이거나 소수점 첫째 자리까지 가지니 int가 아니라 float로 바꿔준다.
E = float(M[0])
연산자는 최대 3개로, 1개일수도 있고 2개일수도 있고 3개일 수도 있다.
for i in range(1, len(M)):
이렇게 쓰면 1부터 리스트 M개의 개수만큼 파악할 수 있다.
그래서 이 리스트 M의 몇 번째 인덱스든간에 연산자 별로 값을 구하면 되는데,
if M[i] == '연산자':
E '연산'= '연산자에 맞는 수'
이렇게 표시할 수 있다.
리스트 M의 몇 번째 인덱스든 해당 연산자가 있다면 값을 곱하고 더하고 빼면 된다.
마지막으로 이렇게 알게 된 값을 출력해야 하는데, 소수점 둘째 자리 까지 출력이다.
이것 때문에 포맷팅에 대해서 공부했는데, 까먹었다 ^_^ 하하...
대충 기억해보자면 지금 내가 쓴 print('{:.2f}'.format(E)) 를 보자.
.숫자f라고 써 있는데 이 숫자만큼의 소수점 자릿수를 보여준다고 보면 된다.
즉 .2f 니까 E의 소수점 2자리를 보여주라고 한 거다.
리스트, for문, format까지 잘 쓸 수 있는 게 없어서 오래 걸렸다...
코드
T = int(input())
for i in range(T):
M = list(map(str, input().split()))
E = float(M[0])
for i in range(1, len(M)):
if M[i] == '@':
E *= 3
if M[i] == '%':
E += 5
if M[i] == '#':
E -= 7
print('{:.2f}'.format(E))
'🥧 Python > ⚙️ 코딩테스트' 카테고리의 다른 글
[백준-Python] 2935번: 소음 (0) | 2023.02.15 |
---|---|
[백준-Python] 2675번: 문자열 반복 (0) | 2023.02.15 |
[백준-Python] 2914번: 저작권 (0) | 2023.02.15 |
[백준-Python] 2530번: 인공지능 시계 (0) | 2023.02.15 |
[백준-Python] 2525번: 오븐 시계 (0) | 2023.02.15 |