안녕하세요. 이번에는 프로그래머스 짝수와 홀수를 풀어보려고 합니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12937
Problem
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 변환하는 함수, solution을 완성해 주세요.
[제한 사항]
○ num은 int 범위의 정수입니다.
○ 0은 짝수입니다.
Solution
class Solution {
fun solution(num: Int): String {
var answer = ""
if(num % 2 == 0) answer = "Even"
else answer = "Odd"
return answer
}
}
이번 문제는 주어진 num의 값이 2로 나누어지는지를 확인하는 방식으로 문제를 접근하였다.
다른 사람 코드
class Solution {
fun solution(num: Int): String
{
return if (num.and(1) == 0) "Even" else "Odd"
}
}
문제를 다 푼 후 다른 사람들은 어떤 식으로 문제를 해결했는지 궁금하여 조사해 본 결과 and()을 사용해서 푼 문제가 있어서 가져와본다.
and()에 대하여 알아보자
더보기
Kotlin에서 Performs a bitwise AND operation between the two values.라고 나와있다
해석을 해보면 두 값 사이에 비트 단위를 AND 연산을 수행한다라는 말이다.
그래서
var num: Int = 2
num.and(1) // 이 값은 0이 나온다
2는 10, 1은 1이기 때문에 비트 자리가 모두 다르므로 00 > 0이 나온다.
var num: Int = 3
num.and(1) // 이 값은 1이 나온다.
3은 11, 1은 1이기 때문에 01 > 1이 나온다.
//여러분들이 한 번 추측해보세요.
var num: Int = 6
var num1 = num.and(1)
var num2 = num.and(1)
var num3 = num.and(1)
var num4 = num.and(1)
println(num1)
println(num2)
println(num3)
println(num4)
// 정답
0
2
2
4
// 풀이
6은 110이다
1은 1 이기 때문에 0 > 0
2은 10 이기 때문에 10 > 2
3은 11 이기 때문에 10 > 2
4는 100 이기 때문에 100 > 4
이렇게 다른 사람의 코드를 통해서 and을 알게 되었다. 향후 이러한 문제는 이렇게 접근을 해봐야겠다.
Performance
1. 내가 작성한 코드 | 2. Filter 와 Sum 사용 코드 |
반응형
'프로그래머스 Algorithm' 카테고리의 다른 글
[프로그래머스] 자릿수 더하기 Kotlin (4) | 2023.11.11 |
---|---|
[프로그래머스] x만큼 간격이 있는 n개의 숫자 Kotlin (0) | 2023.11.10 |
[프로그래머스] 약수의 합 Kotlin (0) | 2023.11.08 |
[프로그래머스] 평균 구하기 Kotlin (0) | 2023.11.07 |
[프로그래머스] 나머지가 1이 되는 수 찾기 Kotlin (0) | 2023.11.06 |