Moon_Dev_Blog :)

[프로그래머스] Day4 연산, 조건문 본문

IT/알고리즘풀이

[프로그래머스] Day4 연산, 조건문

돌베기 2024. 12. 10. 13:26

n의 배수

정수 num과 n이 매개 변수로 주어질 때, num이 n의 배수이면 1을 return n의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요.

class Solution {
    fun solution(num: Int, n: Int): Int {                
        return if(num % n == 0) 1 else 0
    }
}

풀이방법 : n으로 num을 나눠서 나머지가 0일 경우 배수에 해당하기에 나머지 연산 조건을 통해서 해결


공배수

정수 number와 n, m이 주어집니다. number가 n의 배수이면서 m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요.

class Solution {
    fun solution(number: Int, n: Int, m: Int) = if (number % n == 0 && number % m == 0) 1 else 0                        
}

풀이방법 : n, m 둘다 나머지가 0일 경우의 조건이 공배수임


홀짝에 따라 다른 값 반환하기

양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.

class Solution {
    fun solution(n: Int): Int {        
        var sum = 0
        for(i in 1..n) {
            if (i % 2 == 0) {
                if (n % 2 == 1) continue
                sum += (i * i)
            } else {
                if (n % 2 == 0) continue
                sum += i
            }      
        }
                                                    
        return sum
    }        
}

풀이방법 : i(0부터) n만큼 반복문을 돌면서 n이 짝수일 때 i가 홀수면 continue 시키며 각 조건에 맞는 로직으로 결과값을 도출


조건 문자열

문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.

  • 두 수가 n과 m이라면
    • ">", "=" : n >= m
    • "<", "=" : n <= m
    • ">", "!" : n > m
    • "<", "!" : n < m

두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.

class Solution {
    fun solution(ineq: String, eq: String, n: Int, m: Int): Int {
        var answer: Int = 0
        val expressions = ineq + eq
        when(expressions) {
            "<=" -> answer = if (n <= m) 1 else 0
            "<!" -> answer = if (n < m) 1 else 0
            ">=" -> answer = if (n >= m) 1 else 0
            ">!" -> answer = if (n > m) 1 else 0
        }
        
        return answer
    }
}

풀이방법 : 문자열을 수식화 하는게 관점인데.. 전달받은 두 개의 문자열을 하나의 문자열로 합친담에 조건에 따라 수식 로직 적용

 


flag에 따라 다른 값 반환하기

두 정수 a, b와 boolean 변수 flag가 매개변수로 주어질 때, flag가 true면 a + b를 false면 a - b를 return 하는 solution 함수를 작성해 주세요.

class Solution {
    fun solution(a: Int, b: Int, flag: Boolean) = if(flag) a+b else a-b                      
}

풀이방법 : flag 값에 따른 분기 로직 적용

Comments