본문 바로가기
Unreal/C++

[C++ 01.09] if문과 max()함수

by 우타미 2025. 1. 9.
728x90

1. if문

조건에 따라 실행해야 할 문장을 선택해야 할 때 사용하는 선택문 또는 조건문 중 하나인 if문

선택문중 가장 기본이라 정리해보려 한다.

if문의 기본 형식은

if (조건식)

{

실행문

}

 

작성해보면

#include <iostream>
using namespace std;

int main(void)
{
	int a = 4;
	int b = 6;
	if (a > 0)
	{
		b = 1;
	}
	cout << b;
}

a가 0 보다 클 때

b의 값이 1이 되는 선택문을 만들어 보았다.

출력을 하면 b의 값이 1이 되는 것을 알 수 있다.

만약 a가 5보다 크다는 조건이라면

조건이 만족되지 않아 실행되지 않고 b의 값은 6으로 나온다.

 

2. if ~ else 문

조건이 만족되지 않았을 때 실행문을 작성하려면 어떻게 해야 하는가?

if (조건식)

{

실행문 1

}

else

{

실행문 2

}

위와 같이 작성하면 된다. 바로 예시코드를 보도록 하자

#include <iostream>
using namespace std;

int main(void)
{
	int a = 4;
	int b =6;
	if (a > 5) //a가 5보다 크면 
	{
		b = 1;
	}
	else // a가 5보다 크지 않다면
	{
		b = 0;
	}
	cout << b;
}

if문은 a가 5보다 크다는 조건을 걸었다.

하지만 a가 4이기 때문에

else의 실행문을 실행하게 되고

출력값은 b=0이 나오게 되는 것이다.

3. if ~ else if ~else문 

3개 이상의 실행문이 있을 때 

if (조건식)

{

실행문 1

}

else if

{

실행문 2

}

eles

{

실행문 3

}

바로 예시 코드를 만들어보자

#include <iostream>
using namespace std;

int main(void)
{
	int a = 4;
	int b =6;
	if (a > 5) //a가 5보다 크면 
	{
		b = 1;
	}
	else if (a == 5) // a가 5와 같으면
	{
		b = 2;
	}
	else
	{
		b = 0;
	}
	cout << b;
}

a가 5보다 크면 b가 1이 되고, 5와 같다면 2가 출력되고, 위의 두 조건이 아니라면(5보다 작다면) 0을 출력하게 된다.

a가 4이기 때문에 b=0이라는 else문만 실행된다.

여기까지 이해했다면 백준 문제를 하나 풀어보자(아래 링크 클릭)

https://www.acmicpc.net/problem/1330

3가지의 조건이 있음으로 우린 if ~ else if ~ else 문을 작성해야 한다는 것을 알 수 있다.

#include <iostream>
using namespace std;
int main(void)
{
    int A; //정수 A 선언
    int B; //정수 B 선언

    cin >> A >> B; // 정수 A, B 입력받기
    if (A> B) //A가 B보다 크다면
    {
        cout << ">"; //">" 출력
    }
    else if (A == B) //A와B가 같으면
    {
        cout << "=="; // "==" 출력
    }
    else // 둘다 아니라면 (B가 A보다 큰 경우)
    {
        cout << "<"; // "<"출력
    }
    return 0;
}

필자의 코드는 이렇게 짜보았다. 주석 달아났으니 참고해 보시길 바람

4. max() 함수

갑자기 if 문 쓰다가 함수가 왜 등장했냐 물어보신다면... 

if 문 문제 풀다가 일일이 3가지 수를 비교해 가장 큰 수 를 선택할 일이 있어서 찾아보니 획기적인 방법이 있어서 적어본다.

https://www.acmicpc.net/problem/2480

위의 링크 문제 백준 2480번 문제

 

max 함수는 2수를 비교해 큰 값을 반환하는 함수이다.

이렇게 사용하니 나는 숫자 하나하나 비교해 큰 값을 반환하는 수고를 덜게 됨


#include <iostream>
#include <algorithm> //max함수 쓰기위한 헤더

using namespace std;
int main(void)
{
    int n1; // 주사위 1
    int n2; // 주사위 2
    int n3; // 주사위 3
    int result; //상금

    cin >> n1 >> n2 >> n3; //주사위 3개 값 입력받음
    if (n1 == n2 && n2 == n3) //주사위 3개의 눈 수가 동일할 때
    {
        result = 10000 + (n1 * 1000);
    }
    else if (n1 == n2 || n1 == n3|| n2 == n3) // 주사위 눈 2개가 동일할떄
    {
        result = 1000 + (n1 * 100);
    }
    else if (n2 == n3) // 주사위 눈 2개 동일
    {
        result = 1000 + (n2 * 100);
    }
    else // 3개가 다 다를때
    {
        int largest = max(max(n1, n2), n3); // max함수 호출

        result = largest * 100; 

    }
    cout << result;

    return 0;
}

 

더 충격적인 사실은 

중괄호를 이용하면 3개의 값을 바로 비교해 큰 수를 내보낸다는 사실
max()라는 이름은 같아도 매게변수의 수가 다르기 때문에 엄연히 다른 함수임을 확인할 수 있다.

위의 max 함수
아래에 사용한 max 함수

필자는 코딩 찌질이라서 둘 차이는 잘 모르겠지만 다르다는 것을 확일 할 수 있었다.

이 둘의 차이점을 알려 주실 수 있으신 분은 댓글 좀 남겨주세요 궁금해요.

 

오늘의 코딩 복습 완료

728x90