닌자고양이
[C/C++] 중간값 구하기 mid(a, b, c) 본문
// 최소 비교로 중간값 구하기
int mid(int a, int b, int c)
{
if (a < b)
return b < c ? b : (c < a ? a : c);
else
return a < c ? a : (c < b ? b : c);
}
/* 몹쓸(?) 방법들
난독성 define
#define mid(a,b,c)(a<b?b<c?b:c<a?a:c:a<c?a:c<b?b:c)
정렬하여 중간값 구하기
int mid(int a, int b, int c)
{
if (a > b) a += b, b = a - b, a -= b; // swap(a, b)
if (b > c) b += c, c = b - c, b -= c; // swap(b, c)
return a > b ? a : b;
}
총합 - 최소값 - 최대값
int mid(int a, int b, int c)
{
#define left(x, op, y) (x op y ? x : y)
int n = left(left(a, < , b), < , c); // min
int m = left(left(a, > , b), > , c); // max
return a + b + c - n - m;
}
*/
'C C++' 카테고리의 다른 글
[C++] ifstream 으로 텍스트 파일 읽는 방법들 (0) | 2020.09.20 |
---|---|
[C/C++] UTF-8 텍스트 파일 읽는 방법들 (0) | 2020.09.18 |
[C/C++] 공백으로 구분된 정수 배열 입력 받기 (split) (0) | 2020.01.20 |
[C/C++] 콘솔에 확장 아스키 문자 출력 (0) | 2019.12.04 |
[C/C++] ctrl+c 감지하기 (0) | 2019.12.03 |
Comments