Notice
Recent Posts
Recent Comments
Link
할껀하고놀자
[백준] 13420 사칙연산 본문
728x90
import sys
sys.stdin = open('1.txt')
n = int(input())
for i in range(n):
li = input().split(' ')
flag = False
if li[1]=='*':
tmp = int(li[0])*int(li[2])
if tmp == int(''.join(li[-1:])):
flag=True
elif li[1]=='+':
tmp = int(li[0])+int(li[2])
if tmp == int(''.join(li[-1:])):
flag=True
elif li[1]=='-':
tmp = int(li[0])-int(li[2])
if tmp == int(''.join(li[-1:])):
flag=True
elif li[1]=='/':
tmp = int(li[0])/int(li[2])
if tmp == int(''.join(li[-1:])):
flag=True
if flag==True:
print('correct')
else:
print('wrong answer')
다른사람 풀이
import sys;input()
for s in sys.stdin:
a,b=s.split("=")
print(["correct","wrong answer"][int(b)!=eval(a)])
- eval 이라는 함수는 문자열을 그대로 실행시켜 준다고 함.
다른 사람 풀이 2
import sys
def is_correct(s):
tmp = s.split()
for i in range(0,5,2):
tmp[i] = int(tmp[i])
if tmp[3]!='=':
return False
if tmp[1]=="*":
if tmp[0]*tmp[2]==tmp[4]:
return True
elif tmp[1]=="+":
if tmp[0]+tmp[2]==tmp[4]:
return True
elif tmp[1]=="-":
if tmp[0]-tmp[2]==tmp[4]:
return True
elif tmp[1]=="/":
if tmp[0]//tmp[2]==tmp[4]:
return True
return False
n = sys.stdin.readline()
for i in range(int(n)):
s1 = sys.stdin.readline().rstrip()
print("correct" if is_correct(s1) else "wrong answer")
배운점
input()보다는 sys.stdin.readline()을 사용하는 것이 속도 개선에 도움이 된다.
다른 사람 풀이 3
r=""
for _ in range(int(input())):
s=input().split()
if int(eval(s[0]+s[1]+s[2]))==int(s[-1]):
r+="correct\n"
else:
r+="wrong answer\n"
print(r,end="")
'[IT] > 백준' 카테고리의 다른 글
[백준] 5524번 입실 (0) | 2019.09.29 |
---|---|
[백준] 2935 소음 (0) | 2019.09.29 |
[백준] 1010번 다리놓기 (0) | 2019.09.28 |
[백준] 11179번 2진수 뒤집기 (C++, python3) (0) | 2019.09.21 |
[백준] 2744번 대소문자 바꾸기 (0) | 2019.09.21 |
Comments