RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
← 브론즈 IV

조건문

if-else로 흐름을 갈라 경우를 처리한다.

기초 & 구현 Bronze IV 브론즈 IV
선수 지식: 변수입력
1강 조건문의 개념: 흐름을 가르다 공식

조건문이란?

지금까지 프로그램은 위에서 아래로 한 줄씩 순서대로 실행됐습니다. 조건문
"어떤 조건이 참일 때만" 특정 코드를 실행하게 해서, 프로그램이 상황에 따라
다르게 행동하도록 만듭니다.


1. if / else의 기본 모양

int score = 85;
if (score >= 60) {
    cout << "합격" << '\n';
} else {
    cout << "불합격" << '\n';
}

조건이 참(true) 이면 if 블록을, 거짓(false) 이면 else 블록을 실행합니다.
else는 생략할 수 있습니다.


2. 비교 연산자

조건을 만드는 데 쓰는 기호들입니다.

기호 의미
== 같다
!= 다르다
<, > 작다, 크다
<=, >= 작거나 같다, 크거나 같다

비교의 결과는 참 또는 거짓입니다. 특히 "같다"는 ==(등호 두 개)이고,
=(하나)는 대입이라 전혀 다릅니다. 가장 흔한 초보 실수예요.


3. 여러 갈래: else if

조건이 셋 이상일 땐 else if로 이어 붙입니다.

if (score >= 90)      cout << "A" << '\n';
else if (score >= 80) cout << "B" << '\n';
else if (score >= 70) cout << "C" << '\n';
else                  cout << "F" << '\n';

위에서부터 검사하다가 처음 참이 되는 가지 하나만 실행하고 나머지는 건너뜁니다.
그래서 조건을 큰 값부터 차례로 적는 게 자연스럽습니다.


4. 논리 연산자로 조건 합치기

여러 조건을 한 번에 검사할 때 씁니다.

기호 의미
&& 그리고 (둘 다 참)
|| 또는 (하나라도 참)
! 부정 (참↔거짓)
if (x >= 1 && x <= 100) cout << "범위 안" << '\n';
if (x == 0 || y == 0)   cout << "하나는 0" << '\n';

복잡도

조건문 자체는 어떤 가지를 타든 상수 시간 \(O(1)\) 입니다. 검사 비용은 무시할
만하므로, 조건의 순서와 논리를 정확히 짜는 것이 전부입니다.


정리

  • if / else if / else로 흐름을 가른다.
  • "같다"는 ==, =는 대입 — 헷갈리지 말 것.
  • &&, ||, !로 여러 조건을 결합.
  • else if는 위에서부터 첫 참 하나만 실행한다.
2강 조건문 구현과 연습 공식

조건문 구현 레퍼런스

조건문은 문법은 쉽지만 경우를 빠뜨리지 않는 것이 어렵습니다. 대표 패턴과
함정을 코드로 정리합니다.


1. 기본 골격 (C++ / Python)

#include <bits/stdc++.h>
using namespace std;
int main() {
    int x; cin >> x;
    if (x > 0)      cout << "양수" << '\n';
    else if (x < 0) cout << "음수" << '\n';
    else            cout << "영"   << '\n';
}
x = int(input())
if x > 0:
    print("양수")
elif x < 0:
    print("음수")
else:
    print("영")

파이썬은 중괄호 대신 들여쓰기(보통 공백 4칸) 로 블록을 구분합니다. 들여쓰기가
어긋나면 에러가 나니 일관되게 맞추세요.


2. 윤년 판정 — 여러 조건 결합

"4의 배수이면서, 100의 배수가 아니거나, 400의 배수"인 해가 윤년입니다.

if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
    cout << 1 << '\n';   // 윤년
else
    cout << 0 << '\n';
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    print(1)
else:
    print(0)

괄호로 우선순위를 명확히 하는 게 안전합니다.


3. 사분면 판정 — 빠짐없는 분기

int x, y; cin >> x >> y;
if (x > 0 && y > 0)      cout << 1 << '\n';
else if (x < 0 && y > 0) cout << 2 << '\n';
else if (x < 0 && y < 0) cout << 3 << '\n';
else                     cout << 4 << '\n';

모든 경우(1~4사분면)를 빠짐없이 덮는지 확인하는 게 핵심입니다.


4. 함정과 패턴 인식

  • === 혼동if (x = 5)는 대입이라 항상 참이 됩니다. 반드시 ==.
  • 경계값 누락>=>를 헷갈려 딱 경계인 입력에서 틀림. 문제의 "이상/초과/이하/미만"을 꼼꼼히 읽으세요.
  • else 빠뜨림 — 마지막 경우를 else로 받지 않아 아무것도 출력 안 되는 경우.

문제에서 "~이면 A, 아니면 B", "등급/구간을 나눈다", "어느 영역인가" 같은
말이 보이면 조건문 문제입니다.


정리

조건문은 (1) 경계를 정확히, (2) 모든 경우를 빠짐없이, (3) ===를 구분 —
이 셋만 지키면 됩니다. 헷갈릴 땐 경계값(딱 0, 딱 100 등)을 직접 대입해 보세요.