여러가지/알고리즘 & 자료구조

[프로그래머스] 짝수와 홀수

hyeseong-dev 2024. 10. 13. 12:42

문제 설명
정수 num이 주어졌을 때, 해당 숫자가 짝수면 "Even"을 반환하고, 홀수면 "Odd"를 반환하는 함수를 작성하는 문제입니다. 입력값 num이 0일 경우에도 짝수로 간주해야 합니다.


제한 사항

  • numint 범위의 정수입니다.
  • 0은 짝수로 간주합니다.

입출력 예

num return
3 "Odd"
4 "Even"

문제 풀이

이 문제는 숫자가 짝수인지 홀수인지 판별하는 간단한 조건문을 사용하여 해결할 수 있습니다.
짝수는 2로 나눈 나머지가 0인 숫자를 의미합니다. 즉, num % 2 == 0이면 짝수이고, 그렇지 않으면 홀수입니다.

1. Java 코드 풀이

class Solution {
    public String solution(int num) {
        return (num % 2 == 0) ? "Even" : "Odd";
    }

    public static void main(String[] args) {
        Solution sol = new Solution();
        System.out.println(sol.solution(3));  // 출력: "Odd"
        System.out.println(sol.solution(4));  // 출력: "Even"
    }
}

코드 설명

  • 입력으로 주어진 num을 2로 나눈 나머지를 계산하여, 그 값이 0이면 "Even"을 반환하고, 0이 아니면 "Odd"를 반환합니다.
  • 삼항 연산자를 사용해 간결하게 코드를 작성할 수 있습니다.

2. Python 코드 풀이

def solution(num):
    return "Even" if num % 2 == 0 else "Odd"

# 테스트 예시
print(solution(3))  # 출력: "Odd"
print(solution(4))  # 출력: "Even"

코드 설명

  • 파이썬에서는 삼항 연산자를 사용하여 num이 짝수인지 홀수인지 간결하게 판별할 수 있습니다.
  • num % 2 == 0일 경우 "Even"을, 그렇지 않으면 "Odd"를 반환합니다.

3. 시간 복잡도 분석

  • 두 코드 모두 num % 2 연산을 통해 짝수와 홀수를 판별하는 방식으로, 이 연산은 상수 시간에 수행됩니다.
  • 따라서 시간 복잡도는 O(1)입니다.

4. 공간 복잡도 분석

  • 두 코드 모두 추가적인 메모리 사용이 거의 없으며, 상수 크기의 문자열을 반환하기 때문에 공간 복잡도는 O(1)입니다.

5. 다른 자바 코드 풀이 방법

방법 1: 함수형 스타일 (Java 8 이상)
Java 8 이상에서는 Function 인터페이스를 사용한 함수형 스타일로도 문제를 풀 수 있습니다.

import java.util.function.Function;

class Solution {
    public String solution(int num) {
        Function<Integer, String> checkEvenOdd = n -> (n % 2 == 0) ? "Even" : "Odd";
        return checkEvenOdd.apply(num);
    }

    public static void main(String[] args) {
        Solution sol = new Solution();
        System.out.println(sol.solution(3));  // 출력: "Odd"
        System.out.println(sol.solution(4));  // 출력: "Even"
    }
}

이 방법은 자바의 람다식을 활용해 함수형 프로그래밍 스타일로 작성된 풀이입니다.


결론

이 문제는 간단한 짝수/홀수 판별 문제로, 기본적인 연산자를 활용하여 효율적으로 해결할 수 있습니다. 시간 복잡도와 공간 복잡도 모두 O(1)로 매우 효율적입니다.