본문 바로가기
프로그래머스 Algorithm

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

by Echung 2023. 11. 9.

안녕하세요. 이번에는 프로그래머스 짝수와 홀수를 풀어보려고 합니다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/12937

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


Problem

정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 변환하는 함수, solution을 완성해 주세요.

 

[제한 사항]

○ num은 int 범위의 정수입니다.

○ 0은 짝수입니다.

사진 1. 입출력 예

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 사용 코드
실행 결과
사진 2. 실행 결과
실행 결과
사진 3. 실행 결과

 

반응형