Engineering(SoC Design)/C, C++, Rust

swap without tmp

무말랭이 2022. 5. 11. 06:07

오늘 아는 동생이... 중소기업에 신입 C++ 프로그래머 면접을 봤다고 합니다. 그중에 간단한 코딩테스트도 있었다고 하네요.
그런데 하필... 거기에 임시변수를 사용하지 말고 swap 을 구현하라는 유명한 고전문제가 나왔다고 하네요. 제가 이 문제 내는 사람이 너무 생각없이 내는 경우를 몇번 봐서... 이런 문제 내지 말라는 의미로 공유 해 봅니다.
일반적으로 저런 코드를 짜지 말라고 하는 이유인 성능이 오히려 나쁘다거나, 보기 어렵다는 그런 문제가 아닙니다.
보통 C++에서 swap 을 임시변수를 사용하지 않고 구현하는 경우는 다음3가지 케이스를 답으로 생각하고 문제를 냅니다.
1. xor을 사용
2. + - 사용
3. * / 사용

하지만 이것들은 각각 사용이 불가능한 제한 조건이 있습니다.
1. 두 아규먼트가 같은 포인터면 무조건 0이 되어 사용할수없습니다
2. 중간 계산값이 type 범위를 벗어나면 잘못된 값이 나올 수 있습니다
3. 아규먼트에 0이 있으면 Division By Zero 가 발생할 수 있습니다
엣지케이스가 나오지 않도록 하는 아무런 제약 조건을 주지 않고, 단순히 이런 문제를 내는것은, 좋지 않습니다.

'Engineering(SoC Design) > C, C++, Rust' 카테고리의 다른 글

matlab c, cuda 확장기능  (0) 2022.06.02
Rust Book  (0) 2022.05.30
C(STM32)/Verilog(FPGA) - C as STM32  (0) 2022.04.24
성적처리 프로그램  (0) 2022.04.05
[환경설정] 경로 문제 미해결건  (0) 2022.03.19