알고리즘/프로그래머스
[프로그래머스 / 푸드 파이트 대회 / JAVA ]
KDW999
2023. 1. 1. 22:43
https://school.programmers.co.kr/learn/courses/30/lessons/134240
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
food[]에 어떻게 값을 넣을지 고민했었는데 프로그래머스는 그냥 풀이식만 넣고 돌리면 food 배열에 무슨 값을 넣을지는 알아서 해주더라..
풀이는 굉장히 간단하다고 느끼나 정답을 도출하는 과정이 꽤 걸렸다, 실력을 올려서 시간을 단축하자
#문제 접근
food 배열의 요소는 칼로리가 낮은 음식부터 차례대로 들어가며 요소 값은 해당 음식의 갯수이다.
출력은 배열의 0번 째 음식을 중간에 두고 좌우 대칭으로 1번째 부터 (음식 갯수/2)만큼 배치된다.
그렇기에 출력값에서 0을 기준으로 좌측에는 문자열 foodFront,우측에는 foodBack을 넣고 최종적으로 answer에 넣고 합쳤다.
foodFront에는 food[0]을 제외한 food 배열의 값들을 2로 나눈 몫만큼 반복해서 foodFront에 food[i] 순서들을 대입하였다.
foodback은 foodFront의 반대로
class Solution {
public String solution(int[] food) {
String answer = "";
String foodFront = "";
String foodBack = "";
for(int i=1; i<food.length; i++) {
int f = (food[i]/2);
for(int j=1; j<= f; j++) {
foodFront = foodFront + Integer.toString(i);
}
}
for(int i=food.length-1; i>=1; i--) {
int b = (food[i]/2);
for(int j=b; j>=1; j--) {
foodBack = foodBack + Integer.toString(i);
}
}
answer = foodFront + "0" +foodBack;
return answer;
}
}