Notice
Recent Posts
Recent Comments
Link
관리 메뉴

윤일무이

[백준-Python] 5355번: 화성 수학 본문

🥧 Python/⚙️ 코딩테스트

[백준-Python] 5355번: 화성 수학

썸머몽 2023. 2. 15. 12:12
728x90
 

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))

 

 

728x90