입력값이 1일 때는 2를, 입력값이 2일 때는 1을 반환하는 함수를 만들어야 합니다. 이 함수는 어떤 로직을 사용하느냐에 따라 다양한 방식으로 구현할 수 있습니다. 가장 간단한 방법은 조건문을 활용하는 것으로, 숫자가 1이면 2를 반환하고 그렇지 않으면 1을 반환하도록 작성하는 것입니다. 그 외에도 수학적 연산을 활용하는 방법이나 XOR 비트 연산을 이용하는 방법 등 여러 가지 접근이 가능합니다.
예제
아래 예제에서는 두 가지 방법을 소개합니다.
방법 1: if 조건문 사용
입력값이 1인지 검사하여 조건에 따라 다른 값을 반환하는 가장 직관적인 방식입니다.
방법 2: 뺄셈 연산 활용
두 숫자의 합(이 경우 1 + 2 = 3)에서 입력값을 빼면 원하는 결과를 얻을 수 있습니다. 즉, 3에서 1을 빼면 2가 되고, 3에서 2를 빼면 1이 됩니다.
#include <stdio.h>
// 방법 1: if 문 사용
int reverseif(int x) {
if (x == 1) return 2;
else return 1;
}
// 방법 2: 두 수의 합(여기서는 3)에서 입력값을 빼는 방식
int reversesub(int x){
return (3-x);
}
int main() {
printf("%d\n", reverseif(1));
printf("%d\n", reversesub(2));
return 0;
}
실행 결과
2
1
참고로 XOR 연산을 활용하면 x ^ 3 한 줄로도 동일한 결과를 얻을 수 있습니다. 1 XOR 3은 2이고, 2 XOR 3은 1이기 때문입니다. 이처럼 같은 동작을 하는 함수도 조건문, 산술 연산, 비트 연산 등 서로 다른 논리로 자유롭게 구현할 수 있습니다.