[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
입출력 예
n | result |
---|---|
7 | 1 |
1 | 1 |
15 | 3 |
입출력 예 설명
입출력 예 #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’)를 매핑하게 되어 타입 불일치가 발생하였다.
- 앞으로 문자 작업 시 작업 순서와 유형을 고려해서 작업해야겠다 :)