wizardrabbit   2년 전

1. 계산 과정에서 매우 큰 수가 나올 수 있으니 매우 큰 수가 나와도 오버플로우되지 않거나 수가 잘리지 않도록 대비해주세요.

Node.js로 문제를 푼 제 기준으로는 매우 큰 수가 나올 수 있음을 고려하지 못해 계산 결과가 38724738427e+99 같이 'e' 랑 '+' 기호가 예상치 못한 상황에 갑자기 나와 프로그램이 무한루프에 빠졌었습니다. 그래서 BigInt() 를 사용해 이를 해결했습니다. 여러분의 언어에 맞게 큰 수에 대비하시길 바랍니다.

Test Case. A

입력 : 999999999999999999999999999999999999999999+999999999999999999999999999999999999999999

정답 : 1999999999999999999999999999999999999999998

2. 문제의 조건에 따라 처음에는 -만 달랑 붙어있는 음수가 등장하지는 않습니다. 하지만, 계산 중에는 음수가 나올 수도 있습니다.

음수가 나올 것에 대비를 하지 않으면 2-(3-4) 를 계산한 이후 2--1 이 되면서 연산자 두 개가 붙어버립니다. 잘못하다간 프로그램 오류나 무한루프의 원인이 될 것입니다. 저는 계산 결과가 음수가 됐을 경우 따로 []으로 감싸서 보호하는 방식으로 해결했습니다.

Test Case. B

입력 : 3-(1-2)

정답 : 4

3. 빈 괄호도 유효한 경우가 아니므로 ROCK을 출력해야 합니다. 이것을 처리하지 않아 막바지에 틀렸습니다. 괄호 안에 연산자가 없고 숫자만 있는 경우 [예를 들면 (34)] 는 유효한 경우인지는 모르겠습니다. 확실한 것은 빈 괄호를 유효한 경우로 처리했을 때 문제를 틀렸고, 괄호 안에 숫자만 있었을 때는 유효한 경우로 처리하든 ROCK으로 처리하든 영향을 주지 않았습니다. 저는 재채점에 대비해 숫자만 있는 경우를 유효한 경우로 처리하는 코드, ROCK으로 처리하는 코드 둘 다 제출하려고 하니 이 부분에 대해서는 선택에 맡기겠습니다.

Test Case. C

입력 : ()

정답 : ROCK

도움이 되셨기를 바랍니다. 문제가 모호해서 명확한 조건을 찾기 힘들었네요.

댓글을 작성하려면 로그인해야 합니다.