728x90
본 알고리즘 풀이는 Routine Study에서 진행하고 있습니다.
https://github.com/ROUTINE-STUDY/Algorithm
저를 포함한 구성원이 대부분 초보이므로, 원하시는분은 언제라도 들어오셔도 좋습니다.
문의는 댓글 바람.
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/134240?language=kotlin#
[문제 설명]
문자열과 문자열 거꾸로
[접근 방법]
음식을 양쪽에서 먹어야 하므로 각 사람이 먹는 i번째 음식 개수는 food[i] / 2가 된다.(단, i가 0일 때는 물이므로 제외한다.)
입출력 예시로 준 1번 같은 경우에는 [1, 3, 4, 6]이다.
물을 제외하고 각 사람이 먹을 개수는 1 = 1, 2 = 2, 3 = 3개가 된다.
즉, 물의 개수 + 음식의 총 개수 = 1 + (1 + 2 + 3) *2 = 13개가 된다.
총 문자열의 길이는 13이므로 0~5, 12~7는 음식 순서대로 주고 가운데(13 / 2 = 6)는 0으로 물을 준다.
[Kotlin 코드]
class Solution {
fun solution(food: IntArray): String {
var answer = StringBuilder()
var length = 0
for (i in 1 until food.size) {
length += food[i] / 2
food[i] /= 2
}
length *= 2
length += 1
val charArray = Array(length) { ' ' }
charArray[length / 2] = '0'
var pointer = 1
for (i in 0 until length / 2) {
if (food[pointer] == 0) {
while (food[pointer] == 0) {
pointer++
}
}
charArray[i] = pointer.digitToChar()
charArray[charArray.size - i - 1] = pointer.digitToChar()
food[pointer]--
}
charArray.forEach { answer.append(it) }
return answer.toString()
}
}
728x90
반응형
'알고리즘 문제 풀이' 카테고리의 다른 글
프로그래머스 - 대충 만든 자판(Kotlin) (0) | 2023.03.03 |
---|---|
프로그래머스 - 야간 전술 보행(Kotlin) (0) | 2022.11.14 |
2022 Winter Coding - 겨울방학 스타트업 인턴 프로그램 후기 (2) | 2022.11.05 |
백준 - 시리얼 번호(Kotlin) (0) | 2022.10.03 |
프로그래머스 - 베스트 앨범(Kotlin) (0) | 2022.08.09 |