기술 블로그

숫자 교환 본문

알고리즘/면접 및 공부

숫자 교환

parkit 2019. 4. 19. 22:31
728x90
반응형

임시 변수 없이 숫자를 교환(swap)하는 방법






1. 수학적 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <cstring>
#include <string>
#include <math.h>
#include <algorithm>
#include <map>
#include <set>
#include <sstream>
#include <tuple>
 
#pragma warning(disable:4996)  
#pragma comment(linker, "/STACK:336777216")
 
using namespace std;
 
int main(void)
{
    int a = 0, b = 0;
 
    scanf("%d %d"&a, &b);
 
    printf("<swap 전>\n");
    printf("a = %d\n", a);
    printf("b = %d\n\n\n", b);
 
    a = a - b;
    b = a + b;
    a = b - a;
 
    printf("<swap 후>\n");
    printf("a = %d\n", a);
    printf("b = %d\n\n", b);
 
    return 0;
}
cs









2. XOR 이용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <cstring>
#include <string>
#include <math.h>
#include <algorithm>
#include <map>
#include <set>
#include <sstream>
#include <tuple>
 
#pragma warning(disable:4996)  
#pragma comment(linker, "/STACK:336777216")
 
using namespace std;
 
int main(void)
{
    int a = 0, b = 0;
 
    scanf("%d %d"&a, &b);
 
    printf("<swap 전>\n");
    printf("a = %d\n", a);
    printf("b = %d\n\n\n", b);
 
    a = a^b;
    b = a^b;
    a = a^b;
 
    printf("<swap 후>\n");
    printf("a = %d\n", a);
    printf("b = %d\n\n", b);
 
    return 0;
}
cs








728x90
반응형