코딩일기/자격증

[정보처리기사] [Java] 논리 연산자를 활용한 조건문 분석 | 연산자 우선순위 | 정보처리기사 실기 기출문제

jhy_2023 2025. 3. 23. 18:44
728x90
반응형

2021년 3회 정보처리기사 실기 기출문제

문제

다음 Java 코드의 실행 결과를 구하시오.

public class LogicTest { 
    public static void main(String[] args) {
        int a = 3, b = 4, c = 3, d = 5;

        if ((a == 2 || a == c) && !(c > d) && (1 == b ^ c != d)) {
            a = b + c;
            if (7 == b || c != a) {
                System.out.println(a);
            } else {
                System.out.println(b);
            }
        } else {
            a = c + d;
            if (7 == c && d != a) {
                System.out.println(a);
            } else {
                System.out.println(d);
            }
        }
    }
}

정답

7

반응형

해설

📌 변수 선언 및 초기화

int a = 3, b = 4, c = 3, d = 5;
  • a = 3, b = 4, c = 3, d = 5로 초기화됨.

📌 첫 번째 if 조건

if ((a == 2 || a == c) && !(c > d) && (1 == b ^ c != d))
  • 연산자 우선순위에 따라 괄호 먼저 처리

1️⃣ 첫 번째 괄호

(a == 2 || a == c)
  • 연산자 우선순위에 따라 관계 연산자 ==가 먼저 계산되고, 그 후 논리 연산자 ||가 처리됩니다.
    • 관계 연산자
      • a == 2 → false(0)
      • a == c → 3 == 3 → true(1)
    • 논리 연산자
      • || (OR 연산자) 사용 → false || true → true
  • 따라서 (a == 2 | a == c)는 true(1)입니다.

2️⃣ 두 번째 괄호

!(c > d)
  • 연산자 우선순위에 따라 괄호에 있는 c > d가 계산되고, 그 후에 논리 부정 연산자 !가 적용됩니다.
    • 관계 연산자  
      • c = 3, d = 5이므로 c > d는 false(0)
    • 논리 부정 연산자
      • !(false)는 true(1)
    • 따라서 !(c > d)는 true(1)입니다.

3️⃣ 세 번째 괄호

(1 == b ^ c != d)
  • 연산자 우선순위에 따라 우선 1 == b와 c != d를 계산한 후, 비트 XOR 연산자 ^를 적용합니다.
    • 관계 연산자 
      • 1 == b: b = 4이므로 1 == 4는 false(0)
      • c != d: c = 3, d = 5이므로 3 != 5는 true(1)
    • 비트 연산자
      • 비트 XOR 연산자 :서로 다르면 true, 같으면 false
      • false ^ true = true(1)
    • 따라서 (1 == b ^ c != d)는 true(1)입니다.

4️⃣ 전체 조건 결합

1 & 1 & 1
  • 이제 전체 조건을 & (AND) 연산자로 결합합니다.
    • 1 & 1 = 1
    • 1 & 1 = 1
    • 결과적으로 첫 번째 if 조건은 true → 1로 평가됩니다.
a = b + c; // a = 4 + 3 = 7
if (7 == b ^ c != a) {
    System.out.println(a);
} else {
    System.out.println(b);
}
  • 따라서 if 문 안의 코드 블록이 실행됩니다.
728x90

📌두 번째 if 조건 분석

if (7 == b || c != a)
  • 연산자 우선순위에 따라 관계 연산자가 먼저 계산되고, 그 후 논리 연산자 ||가 처리됩니다.
    • 관계 연산자
      • 7 == bfalse
      • c != a → 3 != 7 → true
    • 논리 연산자
      • || (OR 연산자) 사용 → false || true → true
if (7 == b || c != a) {
    System.out.println(a);
} else {
    System.out.println(b);
}
  • if 문이 true이므로 System.out.println(a); 실행 → 7 출력

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형