https://school.programmers.co.kr/learn/courses/30/lessons/134240
문제 설명은 길지만 결과 문자열 중간에는 물을 의미하는 "0" 이 무조건 와야하고
왼쪽에서 먹기 시작하는 사람 , 오른쪽에서 먹기 시작하는 사람이 동일하게 음식을 먹어야하기 때문에
문자열은 좌우 대칭이 되어야한다.
좌우대칭이 되려면 음식은 짝수개로만 쓸 수 있는데
주어진 음식이 홀수개인 경우는
(food[i] / 2).toInt()
2로 나누고 정수형으로 변경해줬다.
이렇게 하면 음식이 1번 음식이 3개 주어졌을때도 1이라는 값이 나와서
좌우에 한개씩 둬야한다는걸 알 수 있게 된다.
이렇게 만든 문자열을 frontString 이라는 변수에 저장해두고
중앙에 와야하는 "0"을 추가해준뒤
대칭을 위해 frontString 를 뒤집고 결과에 합쳐주면 완성된다.
class Solution {
fun solution(food: IntArray): String {
var answer: String = ""
var frontString = ""
for(i in 1 until food.size){
for(j in 0 .. (food[i] / 2).toInt() - 1){
answer += i.toString()
}
}
frontString = answer
answer+= "0"
answer+= frontString.reversed()
return answer
}
}
반응형
'알고리즘' 카테고리의 다른 글
프로그래머스 - 택배상자 (0) | 2024.08.25 |
---|---|
프로그래머스 - 삼총사 (0) | 2024.08.25 |
프로그래머스 - 콜라 문제 (0) | 2024.08.21 |
프로그래머스 - 햄버거 만들기 (0) | 2024.08.21 |
프로그래머스 - 과일장수 (0) | 2024.08.20 |
프로그래머스 - 기사단원의 무기 (0) | 2024.08.19 |
프로그래머스 - 귤고르기 (0) | 2024.08.18 |
프로그래머스 - 명예의 전당(1) (0) | 2024.08.18 |