[Algorithm] 외계 행성의 나이

[Algorithm] 외계 행성의 나이

문제 링크

성능 요약

메모리: 60.2 MB, 시간: 0.01 ms

구분

코딩테스트 연습 > 코딩테스트 입문

채점결과

정확성: 100.0 합계: 100.0 / 100.0

제출 일자

2024년 1월 6일 17:1:57

문제 설명

머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.


제한사항
  • 1 ≤ n ≤ 100

입출력 예
nresult
71
11
153

입출력 예 설명

입출력 예 #1

  • 7명이 최소 한 조각씩 먹기 위해서 최소 1판이 필요합니다.

입출력 예 #2

  • 1명은 최소 한 조각을 먹기 위해 1판이 필요합니다.

입출력 예 #3

  • 15명이 최소 한 조각씩 먹기 위해서 최소 3판이 필요합니다.

풀이 1, 2

풀이 1
class Solution {
    fun solution(age: Int): String {
        var answer: String = ""
        for (i in age.toString().toList()) {
            when (i.toString()) {
                "0" -> answer += ("a")
                "1" -> answer += ("b")
                "2" -> answer += ("c")
                "3" -> answer += ("d")
                "4" -> answer += ("e")
                "5" -> answer += ("f")
                "6" -> answer += ("g")
                "7" -> answer += ("h")
                "8" -> answer += ("i")
                "9" -> answer += ("j")
            }
        }
        return answer
    }
}

풀이 2

class MySolution {
    fun solution(age: Int) = age.toString().map { ('a' + it.toString().toInt()) }.joinToString("")
}

설명

  • 풀이 1은 기본적으로 when을 사용하여 풀어봤다.
  • 좀 더 가볍게 작성할 수 있고 코드 수가 확 짧아지는 map함수를 사용하여 풀어보기로 했다.
  • 먼저 map연산을 위해 toString을 해주었다.
  • 다음으로 각 숫자를 정수로 변환하여 ‘a’에 더해주었다.
  • 마지막으로 joinToString을 통해 문자열로 변환해주었다.

참고 + 느낀점

  • 1번의 코드는 가능하고 2번은 안되는 이유
1. 'a' + it.toString().toInt()
2. it.toString().toInt() + 'a'
  • 풀이를 진행 중 초기엔 2번의 답변대로 작성을 하다 오류가 떠 1번으로 변경했는데 오류가 잡혔다.
  • 그 이유는 1번은 아스키 값(‘a’) 뒤에 숫자를 붙여주어 매핑했기 때문에 정상적으로 작동하였지만, 2번은 정수에 아스키 값(‘a’)를 매핑하게 되어 타입 불일치가 발생하였다.
  • 앞으로 문자 작업 시 작업 순서와 유형을 고려해서 작업해야겠다 :)

© 2023. All rights reserved.

by SoftyChoo