[프로그래머스] 주사위 게임 2

devel_liz·약 9시간 전
0

코딩테스트

목록 보기
6/8

🗒 문제



📝 나의 문제풀이

class Solution {
    fun solution(a: Int, b: Int, c: Int): Int {
        val sum = a + b + c
        val squareSum = a * a + b * b + c * c
        val cubeSum = a * a * a + b * b * b + c * c * c

        return when {
            a == b && b == c -> sum * squareSum * cubeSum
            a == b || b == c || a == c -> sum * squareSum
            else -> sum
        }
    }
}

📝 다른 사람의 문제 풀이

class Solution {
    fun solution(a: Int, b: Int, c: Int): Int {
        val set = intArrayOf(a, b, c).toSet()
        return when (set.size) {
            3 -> a + b + c
            2 -> (a + b + c) * (a * a + b * b + c * c)
            1 -> (a + b + c) * (a * a + b * b + c * c) * (a * a * a + b * b * b + c * c * c)
            else -> -1
        }
    }
}

🖊 문제 풀이 시 알면 좋을 것

  • 거듭제곱

    • 거듭제곱은 같은 수를 여러 번 곱하는 연산입니다.
      • 예를 들어, 2^3은 2를 세 번 곱한 것과 같습니다
        2^3 = 2 × 2 × 2 = 8
  • intArrayOf

    • intArrayOf()는 정수 배열을 생성하는 함수입니다. 괄호 안에 정수들을 넣으면 그 값들을 요소로 갖는 배열을 반환합니다.
      • 이 코드는 [1, 2, 3]이라는 정수 배열을 생성합니다.
        val array = intArrayOf(1, 2, 3)
  • toSet()

    • toSet()은 컬렉션(예: 배열, 리스트 등)을 Set으로 변환하는 함수입니다.
    • Set은 중복된 값을 허용하지 않는 특성이 있습니다.
      • 배열이나 리스트에서 중복을 제거하고 고유한 값들만 유지한 집합을 만들 때 사용합니다. (toSet()은 리스트나 배열의 중복된 값을 제거하고 {1, 2, 3}과 같은 집합을 반환합니다.)
        val list = listOf(1, 2, 2, 3)
        			val set = list.toSet()
        			println(set) // 출력: {1, 2, 3}
  • size

    • size는 컬렉션(배열, 리스트, Set 등)의 크기(즉, 요소의 개수)를 반환하는 속성입니다.
      • array.size는 배열에 들어 있는 요소의 개수인 3을 반환합니다.
      		val array = intArrayOf(1, 2, 3)
      			println(array.size) // 출력: 3

📌 마치며

이번 문제를 풀 때, 주어진 조건식을 그대로 나열하고 조건들 중 부합한 조건에 연산을 한 뒤 연산 값을 반환하게 했다. 이렇게만 풀면 간단한 문제 아닌가라고 생각하겠지만 결과를 제출하고나서 다른 사람의 문제풀이를 보고는 깜짝 놀랐다. toSet()을 저렇게 활용할 수도 있구나. 역시 사람은 아는만큼 보이는 것 같다. 코딩테스트할 때마다 흥미로운 점은 같은 문제도 이처럼 바라보는 관점이 다르고 풀이가 다르다는 것이다. 오늘도 배운다.

profile
Android zizon

0개의 댓글