long long solution(int a, int b) {
long long answer = 0;
if (a > b) a ^= b ^= a ^= b;
answer = (long long)b * -~b / 2 - (long long)a * ~-a / 2;
return answer;
}
프로그래머스에서 다른 사람 코드들을 보다가 우연히 보게되었다.
xor 연산으로 2개 변수 값을 뒤바꾸는 연산을 구현하여 추가적인 공간을 할애하지 않고 한 줄로 마무리한 점이 인상깊다.
특히 다른 점 보다 n * (n+1)을 1의 보수를 활용해
n * -~n으로 표현한 점이 대단한것 같다.
이런 코드를 단 번에 생각해내는 사람들은 참 멋있다는 생각이 든다.