작성일 :

문제 링크

5988번 - 홀수일까 짝수일까

설명

길이가 매우 긴 수가 주어졌을 때, 해당 수가 홀수인지 짝수인지 판별하는 간단한 문제입니다.

입력으로 주어지는 수는 최대 60자리의 자연수로, 일반적인 정수 타입으로는 처리할 수 없습니다.


하지만 홀수인지 짝수인지를 판단하는 기준은 가장 마지막 자리이기 때문에,

전체 숫자를 파싱할 필요 없이 문자열의 마지막 문자만 확인하면 됩니다.

  • 1, 3, 5, 7, 9 → 홀수 (odd)
  • 0, 2, 4, 6, 8 → 짝수 (even)


접근법

문자열로 주어진 수가 아무리 길더라도, 그 수가 홀수인지 짝수인지를 판단하는 데에는 전체 수를 볼 필요가 없습니다.

정수의 홀짝 여부는 항상 마지막 자리 숫자 하나만으로 결정되기 때문입니다.


예를 들어, 10412234567890 같은 수는 끝자리가 0이므로 짝수이고, 777, 123처럼 끝자리가 3이나 7인 경우는 홀수입니다.


따라서 입력으로 주어진 문자열의 마지막 문자를 확인하여,

그 문자가 짝수 숫자이면 "even", 홀수 숫자이면 "odd"라고 출력하면 됩니다.

숫자를 직접 계산할 필요 없이, 끝자리만 읽는 방식으로도 정확하고 빠르게 판별이 가능하다는 점이 이 문제의 핵심입니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
using System;

class Program {
  static void Main() {
    int n = int.Parse(Console.ReadLine());
    while (n-- > 0) {
      string s = Console.ReadLine();
      char last = s[s.Length - 1];
      Console.WriteLine((last - '0') % 2 == 0 ? "even" : "odd");
    }
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n; cin >> n;
  while (n--) {
    string s; cin >> s;
    cout << (s.back() % 2 ? "odd" : "even") << "\n";
  }

  return 0;
}