상세 컨텐츠

본문 제목

[CodeUp] C언어 기초 100제 풀이 (1061번 ~ 1065번)

C언어

by idea8590 2026. 2. 1. 22:26

본문

반응형

이번 1061번부터 1065번까지는 비트 단위 논리 연산을 마무리하고, 프로그램의 흐름을 제어하는 조건문(Conditional Statement)의 기초로 진입합니다. 비트 단위로 값을 합치는 OR(|) 연산과 서로 다른 비트만 골라내는 XOR(^) 연산의 차이를 명확히 구분합니다. 그 후, 항이 3개 필요한 삼항 연산자(?:)를 통해 복잡한 if-else 문을 한 줄로 간결하게 표현하는 방법을 익힙니다. 특히 두 수 중 큰 값을 골라내는 로직을 세 수로 확장하며 연산자의 중첩 사용법을 연습하게 됩니다. 마지막으로는 조건에 따라 코드를 실행하거나 건너뛰는 선택 제어문(if)을 사용하여 짝수만 골라 출력하는 기본 패턴을 다룹니다.


1061번 : 비트 단위로 OR 하여 출력하기 (Bitwise OR)

두 정수를 입력받아 비트 단위로 OR 연산한 결과를 출력합니다.

C
 
#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d", a | b);
    return 0;
}

 

실행 결과

입력 예시: 3 5
출력 예시: 7

 

상세 설명 파이프(|) 기호 하나를 사용하면 비트 단위 OR 연산을 수행합니다. 두 비트 중 하나라도 1이면 1이 됩니다.

  • 3 = 0011
  • 5 = 0101
  • 3 | 5 = 0111 (10진수로 7) 덧셈과 비슷해 보이지만 자릿수 올림(Carry)이 발생하지 않는다는 점에서 다릅니다.

1062번 : 비트 단위로 XOR 하여 출력하기 (Bitwise XOR)

두 정수를 입력받아 비트 단위로 XOR 연산한 결과를 출력합니다.

C
 
#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d", a ^ b);
    return 0;
}

 

실행 결과

입력 예시: 3 5
출력 예시: 6

상세 설명 캐럿(^) 기호는 비트 단위 XOR(Exclusive OR) 연산자입니다. 대응하는 비트가 서로 다를 때만 1, 같으면 0이 됩니다.

  • 3 = 0011
  • 5 = 0101
  • 3 ^ 5 = 0110 (10진수로 6) 이 연산은 암호화나 두 변수의 값을 교환(Swap)할 때 유용하게 쓰입니다.

1063번 : 두 정수 입력받아 큰 수 출력하기 (삼항 연산자)

두 정수 중 더 큰 값을 출력합니다. 단, if문을 사용하지 않고 삼항 연산자를 사용합니다.

C
 
#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d", a > b ? a : b);
    return 0;
}

 

실행 결과

입력 예시: 123 456
출력 예시: 456

 

상세 설명

 

삼항 연산자는 조건식 ? 참일_때_값 : 거짓일_때_값 형태를 가집니다. a > b가 참이면 a를 선택하고, 거짓이면 b를 선택합니다. 간단한 조건 판단을 한 줄로 작성할 때 매우 효율적입니다.


1064번 : 정수 3개 입력받아 가장 작은 수 출력하기 (삼항 연산자 중첩)

세 정수 중 가장 작은 값을 출력합니다. 삼항 연산자를 중첩하여 사용합니다.

C
 
#include <stdio.h>

int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    printf("%d", (a < b ? a : b) < c ? (a < b ? a : b) : c);
    return 0;
}

 

실행 결과

입력 예시: 3 -1 5
출력 예시: -1

상세 설명

 

삼항 연산자 안에 또 다른 삼항 연산자를 넣을 수 있습니다.

  1. (a < b ? a : b) : 먼저 a와 b 중 작은 수를 찾습니다.
  2. 그 결과를 c와 비교합니다.
  3. 최종적으로 셋 중 가장 작은 수가 남게 됩니다. 코드가 길어질 수 있으므로, 실제 개발에서는 가독성을 위해 괄호를 적절히 사용하거나 min 변수를 따로 두기도 합니다.

1065번 : 정수 3개 입력받아 짝수만 출력하기 (if문)

세 정수 a, b, c를 입력받아 그중 짝수(Even number)만 골라 줄을 바꿔 출력합니다.

C
 
#include <stdio.h>

int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    
    if(a % 2 == 0) printf("%d\n", a);
    if(b % 2 == 0) printf("%d\n", b);
    if(c % 2 == 0) printf("%d\n", c);
    
    return 0;
}

 

실행 결과

입력 예시: 1 2 4
출력 예시:
2
4

상세 설명

 

여기서부터 제어문(if)이 본격적으로 사용됩니다. if(조건식)은 괄호 안의 내용이 참(1)일 때만 뒤따르는 명령을 실행합니다. 짝수는 2로 나누었을 때 나머지가 0인 수이므로, 나머지 연산자(%)를 사용하여 a % 2 == 0 조건을 검사합니다.


핵심 요약

  1. 비트 연산자 | (OR)는 비트 중 하나라도 1이면 1이 되는 합집합 개념입니다.
  2. 비트 연산자 ^ (XOR)는 비트가 서로 다를 때만 1이 됩니다.
  3. 삼항 연산자(? :)는 조건 ? 참값 : 거짓값 구조로, 간단한 if-else를 대체합니다.
  4. 세 수의 최소/최대값을 구할 때 삼항 연산자를 중첩해서 사용할 수 있습니다.
  5. if 문과 **나머지 연산자(%)**를 조합하면 배수 판별이나 짝수/홀수 필터링을 쉽게 구현할 수 있습니다.
반응형

관련글 더보기