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()라는 이름은 같아도 매게변수의 수가 다르기 때문에 엄연히 다른 함수임을 확인할 수 있다.
필자는 코딩 찌질이라서 둘 차이는 잘 모르겠지만 다르다는 것을 확일 할 수 있었다.
이 둘의 차이점을 알려 주실 수 있으신 분은 댓글 좀 남겨주세요 궁금해요.
오늘의 코딩 복습 완료
'Unreal > C++' 카테고리의 다른 글
[C++ 01.17] 배열과 오름차순, 선택 정렬 sort() 함수, (0) | 2025.01.17 |
---|---|
[C++ 01.10]계좌 개설 클래스로 알아보는 enum 열거형, switch ~ case 문, while문 (0) | 2025.01.10 |
[C++ 01.02] 표준입출력, 헤더파일, 네임스페이스, 범위지정 연산자 (0) | 2025.01.02 |