본문 바로가기

2018/07

배열없이 3개 정수 정렬하기 3개의 정수에서만 사용할 수 있는 트릭을 사용한 코드이다.최솟값과 최댓값을 알면 나머지 한 값도 알 수 있는 방식이다. #include #include int main(int argc, char const *argv[]) { int m, M, val, i, t; m = INT_MAX, M = INT_MIN, t = 0; for(i = 0; i < 3; ++i) { scanf("%d", &val); if(m > val) m = val; if(M < val) M = val; t ^= val; } t ^= m ^ M; printf("정렬한 결과 : %d %d %d\n", m, t, M); return 0; }
삼중자(Trigraph) C언어에서 기본으로 사용하는 문자집합(Character set)은 ASCII입니다.하지만 일부 국가들에서 ISO/IEC 646를 기준으로 하는 키보드를 사용하는데, 우리나라도 여기에 포함됩니다. 여기서 ISO/IEC 646이란 7비트로 문자를 표기하는 방식을 선언해놓은 것으로 미국의 체계인 ASCII를 기반으로 합니다. 숫자나 알파벳은 공통적인 부분과 일부 문장부호(!, ", #, $, &, :, ?, @, [, \, ], ^, _, `, {, |, }, ~)에 대해서 각 나라의 상황에 맞게 변경할 수 있는 부분으로 구성되어 있습니다. 한국의 경우 백슬래시(\)가 원화(\)로 표기됩니다. 그래서 일부 C언어 책자에서 처음에 등장하는 Hello, World!를 출력하는 과정에서 \가 등장하는데 이 문자를 ..
삼성 codeground 1차 합격 2016년에 한 번 보고, 두 번째로 본 시험이었다. 그 때에는 1차 예선에서 모든 문제를 풀었으나 2문제는 만점을 받지 못하고 시간 초과로 인해 부분점수만 받았었다. 그리고 2차 예선때는 시험기간과 겹쳐서 많은 시간을 투자할 수가 없어서 1문제만 풀고 나머지는 풀지 못해서 떨어졌었다. 이번 시험의 경우 1차 시험의 난이도가 훨씬 더 어려워진 것이 느껴졌다. 2문제만 만점을 받고 나머지 3문제는 아예 풀지 못했었다. 그래서 크게 기대를 하지 않았었는데, 운 좋게도 1차 예선을 통과할 수 있었다. 물론 2차 예선에서는 아마 떨어지겠지만 그래도 풀 수 있는 문제가 1개만이라도 나왔으면 좋겠다.