본문 바로가기

알고리즘

알고리즘 문제풀이 1~7

1. 프로그래머스 두 수의 차 코틀린

class Solution {
    fun solution(num1: Int, num2: Int): Int {
        var answer: Int = 0
        return answer
    }
}

처음으로 써보는 기능이지만 티스토리 블로그에도 코드블럭이라는게 있어서 사용해보았다.

우선 두 수의 차 초기 코드이다.

 

 

 

n1이 2이고 n2가 3일때 -1을 return , n1이 100, n2가 2일때 98을 return 한다.

 

간단한 사칙 연산이다.

 

함수(fun)에 num1,2 모두 Int(정수)를 초기 코드에서 값이 변하는 변수 var이 이미 선언되어 있는데, 여기서 Int = 0을 Int = num1-num2 로 바꿔서 리턴하면 된다.

 

 

 

 

class Solution {
    fun solution(num1: Int, num2: Int): Int {
        var answer: Int = num1-num2
        return answer
    }
}

근데 이러면 너무 길기도 하고 간단하게 

class Solution {
    fun solution(num1: Int, num2: Int) = num1-num2
}

이렇게도 가능하다.

 

 

2. 프로그래머스 두 수의 곱 코틀린

class Solution {
    fun solution(num1: Int, num2: Int): Int {
        var answer: Int = 0
        return answer
    }
}

초기 코드이다.

num1,2는 0이상 100이하의 정수이다.

1번이랑 같이 간단하게 '-'를 '*'로 바꿔주면 된다.

class Solution {
    fun solution(num1: Int, num2: Int) = num1*num2
}

 

 

3. 프로그래머스 몫 구하기

class Solution {
    fun solution(num1: Int, num2: Int): Int {
        var answer: Int = 0
        return answer
    }
}

초기코드이다. 이거도 위와 같이 나누기 부호인 '/'를 사용해주면 된다.

class Solution {
    fun solution(num1: Int, num2: Int) = num1/num2
}

 

 

4. 프로그래머스 나이 출력

class Solution {
    fun solution(age: Int): Int {
        var answer: Int = 0
        return answer
    }
}

 

 

 

 

2022년 기준 40살은 1983년생이다.

2022년 기준 23살은 2000년생이다.

 

 

 

 

 

 

 

 

 

 

 

제한사항을 보고 제일 쉽게 예를 들어보자. 2022년에 태어난 사람은 1살이 되어야 하는데 2022(기준) - x = 2022 -> x = 0

-> 2022에서 그냥 나이만 빼면 우리가 태어난 해를 0살로 해야한다. 근데 태어난 연도를 1살로 친다고 했으니 +1을 해주도록 하자.

class Solution {
    fun solution(age: Int) = 2022 - age + 1
    }

이거도 사칙연산으로 보면 되니 초기코드보다 훨씬 간단하게 끝낼 수 있다.

 

 

5. 프로그래머스 숫자 비교하기

이제 마냥 사칙연산에서 벗어나 조건문을 활용해야 한다.

class Solution {
    fun solution(num1: Int, num2: Int): Int {
        var answer: Int = 0
        return answer
    }
}

초기코드이다.

 

 

 

두 수가 같으면 1, 아니면 -1이라는 값이 리턴되어야한다.

 

'비교하기' 이므로 비교연산자를 활용하는 if라는 함수를 활용할 수 있다.

 

두 항의 값이 같으면 true, 아니라면 false라는 뜻을 가진 연산자 ' == '을 활용해보자.

 

 

 

 

우선 var 선언 밑에 if 함수를 넣고 두 수가 같은값일 때의 답인 1, 그렇지 않을 때의 답인 -1을 적어주자.

if를 썼으니 같은 값일때  나타낼 값을 쓰고 그렇지 않을 때를 나타내기 위해 따라오는 else를 적은 후 그렇지 않을 때 나타낼 값을 적어준다.

class Solution {
    fun solution(num1: Int, num2: Int): Int {
        var answer: Int = 0

        if(num1 == num2){
            answer = 1
        }else{
            answer = -1
        }

        return answer
    }
}

마지막에 return  하는 것은 answer 값인 1또는 -1 그래서 return answer까지 다 적어주자.

 

 

6.  프로그래머스 두 수의 합

class Solution {
    fun solution(num1: Int, num2: Int): Int {
        var answer: Int = -1
        return answer
    }
}

이건... 위쪽에서 했던 사칙연산이다.

합이니 ' + '나 붙여주자.

class Solution {
    fun solution(num1: Int, num2: Int) = num1+num2
}

 

 

7. 프로그래머스 두 수의 나눗셈

class Solution {
    fun solution(num1: Int, num2: Int): Int {
        var answer: Int = 0
        return answer
    }
}

3나누기 2를 하면 1.5라는 값이 나온다. 다만 이러면 위에 코드에선 Int 즉 정수만 나오게 되어있는데 이러면 정상적으로 나오질 않는다. 따라서 소숫점을 나타낼 수 있는 Double을 사용해야한다. 우선 3과 2 이들을 소숫점으로 나타내기 위해 3.toDouble(), 2.toDouble() 이렇게 되어야한다. 즉 식에 넣어보면 num1.toDouble() / num2.toDouble이 된다. 다만 7나누기 3은 2.33333333... 이렇게 쭉 나가기 때문에 에러가 날 것이다. 그리고 문제에서도 1000을 곱하여 정수부분을 리턴하라고 한다.

자 이제 정수 부분 리턴을 위해 마지막 답에 .toInt() 를 사용하여 인트로 바꿔주자. 솔직히 소수점 몇번째 자리까지만 나타내라 같은 문제를 본거 같은데 기억이 나질 않는다...우선 일단 toInt()를 통해 한번 바꿔보자.

class Solution {
    fun solution(num1: Int, num2: Int): Int {
        var answer : Double = num1.toDouble() / num2.toDouble() * 1000
        return answer.toInt()
    }
}

우선 리턴하는 정답에 정수로 바꿔주는 toInt()를 사용하니 답이 나왔다.

이제 좀 차근차근 쉬운 문제더라도 어떤것을 사용하고 어떻게 이용하는지 계속 생각하면서 풀어봐야겠다.