[Programmers] 푸드 파이트 대회 - JAVA

최영환·2022년 11월 19일
0

Programmers

목록 보기
5/43
post-thumbnail

💡 문제

💬 입출력 예시

📌 풀이(소스코드)

class Solution {
    public String solution(int[] food) {
        String answer = "";
        
        // 먹게될 음식 순서
        for (int i = 1; i < food.length; i++) {
        	if (food[i] >= 2) {
        		food[i] = food[i] / 2;
                for (int j = 0; j < food[i]; j++) {
                    answer += Integer.toString(i);
                }
        	}
        }
        
        // 물 추가
        answer += Integer.toString(0);
        
        // 앞에서 구한 음식 순서를 역순으로 이어붙임
        for (int i = answer.length() - 2; i >= 0; i--) {
        	answer += answer.charAt(i);
        }
        
        return answer;
    }
}

📄 해설

  • 아래와 같이 해결하였음
    1. 음식의 양이 2 미만인 경우, 담지 않음
    2. 2 이상일 경우, 2로 나눈 몫만큼 해당 음식을 담음
    3. 중간에 물을 추가하고, 앞에서 구한 음식 순서를 역순으로 뒤에 이어붙임
  • 다른 사람의 풀이. 더 간결하고 좋은 코드라고 생각함
class Solution {
    public String solution(int[] food) {
        String answer = "0";

        for(int i = 1; i < food.length; i++)
            food[i] = food[i] - food[i] % 2;

        for(int i = food.length - 1; i >= 1; i--)
            for(int j = 0; j < food[i] / 2; j++)
                answer = i + answer + i;

        return answer;
    }
}
profile
조금 느릴게요~

0개의 댓글