kye0226   2년 전

반례가 무엇일까요 

아래코드대로 하면 연산자 갯수 상관없이 min,max다 구할 수 있는데 안되는 이유가 궁금합니다. 

aksndk123   2년 전

"14888번 연산나누기"로 가셔서 설명을 보시면 

또, 나눗셈은 정수 나눗셈으로 몫만 취한다. 음수를 양수로 나눌 때는 C++14의 기준을 따른다. 즉, 양수로 바꾼 뒤 몫을 취하고, 그 몫을 음수로 바꾼 것과 같다. 이에 따라서, 위의 식 4개의 결과를 계산해보면 아래와 같다.

  • 1+2+3-4×5÷6 = 1
  • 1÷2+3+4-5×6 = 12
  • 1+2÷3×4-5+6 = 5
  • 1÷2×3-4+5+6 = 7

라고 나와있습니다. 이문제에선 나누기에 대해서 설명이 없으니 위를 기준으로 보면, 

/ 를 사용하는것이 아닌 // 을 사용해야하며, 모두 양수 or 음수인 경우엔 상관없지만 res * nums[i] < 0 인 경우에는 abs(res) // abs(nums[i]) * -1 을 사용하면  위와 같은 결과를 가집니다. 이를 기준으로 코드 수정하시면 알고리즘은 맞는거 같으니 통과하실꺼같습니다.

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