[백준] 5989번 홀수일까 짝수일까 - C++

potatoj11n·2024년 1월 20일

백준

목록 보기
14/36

🌱 문제 설명

5989번 홀수일까 짝수일까

짝이 없는 경재는 매일 홀로 있다보니 홀수를 판별할 수 있는 능력이 생겼다. 창식이는 경재의 말이 사실인지 그 능력을 시험해보려 한다. 창식이의 의심이 끝이 없을 것 같아 N개만 확인하기로 정했다.

N개의 정수가 주어지면 홀수인지 짝수인지를 출력하는 프로그램을 만들어 경재의 능력을 검증할 수 있게 도와주자.


입력

첫 번째 줄에 숫자의 개수 N(1 <= N <= 100)이 주어진다.

두 번째 줄부터 N+1번째 줄에 걸쳐 홀수인지 짝수인지 확인할 정수 K (1 <= K <= 10^60)가 주어진다.


출력

N개의 줄에 걸쳐 한 줄씩 정수 K가 홀수라면 'odd'를, 짝수라면 'even'을 출력한다.

힌트

1024는 2로 나누어지므로 짝수이고, 5931은 그렇지 않으므로 홀수이다.

풀이

#include <iostream>
using namespace std;

int main() {
    int num;//입력 받을 문자열의 갯수
    cin >> num;

    for (int i = 0; i < num; i++) {//입력받은 문자열의 개수만큼
        string s;
        cin >> s;//문자열을 입력받고

        // 문자열의 마지막 자리 숫자를 가져와서 정수로 변환
        int last = s.back() - '0';
        if (last % 2 == 0)//문자열의 마지막 자리 숫자가 짝수인지 판별
            cout << "even" << endl;
        else
            cout << "odd" << endl;
    }

    return 0;
}

❣️문제 요약:

입력받은 문자열의 짝수, 홀수 여부 판단

🤔 생각해야 할 점

  1. 숫자의 짝수 홀수 여부는 마지막 자리 숫자, 일의 자리 숫자를 보면 알 수 있다.
  2. 마지막 자리 숫자가 짝수이면 그 수는 짝수다.
  3. 문자를 정수로 바꿀 때는 해당 문자에 0 을 빼준다.

✅ 0을 빼면 문자가 정수로 변환되는 이유

C++에서 문자 '0'의 ASCII 값은 48이며, 이를 빼면 해당 숫자의 정수 값이 된다.

예를 들어, 문자열 "123"에서 '3'을 가져와서 정수로 변환하고 싶다면, '3'의 ASCII 값인 51에서 '0'의 ASCII 값인 48을 빼면 정수 3이 된다.

대문자 ‘A’ 의 ASCII 값 = 65

소문자 ‘a’의 ASCII 값 = 97 ( - a → 초기화)


  • 문자열의 마지막 자리를 가져와서 숫자로 변환
    int last = s.back() - '0';

문자열.back() 은 해당 문자열을 가장 끝의 문자를 가져오는 메소드이고 여기서 0을 빼주면 문자로 되어있던 숫자를 정수형으로 변환해준다.

  • 짝수 홀수 여부 판별
    문자열의 마지막 자리 숫자가 2로 나누어떨어지면 짝수이므로 even을 출력해준다.
    if (last % 2 == 0)//문자열의 마지막 자리 숫자가 짝수인지 판별
     cout << "even" << endl;
    else
     cout << "odd" << endl;

0개의 댓글