문제 설명
정수 num
이 주어졌을 때, 해당 숫자가 짝수면 "Even"을 반환하고, 홀수면 "Odd"를 반환하는 함수를 작성하는 문제입니다. 입력값 num
이 0일 경우에도 짝수로 간주해야 합니다.
제한 사항
num
은int
범위의 정수입니다.- 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)로 매우 효율적입니다.
'여러가지 > 알고리즘 & 자료구조' 카테고리의 다른 글
[프로그래머스] 약수의 합 (0) | 2024.10.13 |
---|---|
[프로그래머스] 자릿수 더하기 (0) | 2024.10.13 |
[프로그래머스] x만큼 간격이 있는 n개의 숫자 (0) | 2024.10.13 |
[프로그래머스] 평균 구하기 (0) | 2024.10.13 |
[프로그래머스] 나머지가 1이되는 수 찾기 (0) | 2024.10.12 |