[프로그래머스] 푸드 파이트 대회

JOY·2023년 6월 15일
0

[CodingTest] Java

목록 보기
37/61
post-thumbnail

🫡 문제

프로그래머스 - 푸드 파이트 대회

🫡 이해

처음에 food 배열 숫자가 이해가 안돼서 생각해보다가
0번째 인덱스가 이고 그 다음 순차적으로 1번 음식의 수, 2번 음식의 수, 3번 음식의 수 라는 것을 깨달음!

  1. 두 선수가 동일한 음식의 양을 나눠먹어야 하기 때문에
    음식의 수가 모두 짝수여야 한다.

  2. 총 음식의 수를 반으로 나누어서
    중앙에는 0을 중심으로 왼쪽, 오른쪽(숫자뒤집기) 동일해야한다.

  3. 해당 문제에서는 음식 양의 칼로리가 적은 순서대로 배열에 담아주기 때문에 따로 정렬을 하지 않아도 된다.

🫡 코드1

class Solution {
    public String solution(int[] food) {
        String left = "";
        String right = "";
        
        for(int i=1; i<food.length; i++){
            for(int j=0; j<food[i]/2; j++){
                left += Integer.toString(i);
            }
        }
        
        for(int i = left.length()-1; i>=0; i--){
            right += left.charAt(i);
        }
        
        left += "0";
        
        return left+right;
    }
}

🫡 풀이1

  1. 0()을 중심으로 1,2,3번째 음식의 수의 절반 만큼 left 에 먼저 저장
  2. 왼쪽에 배치한 음식의 순서를 거꾸로한 상태가 오른쪽에 배치한 음식의 순서이기 때문에
    left 의 마지막숫자부터 차례대로 right에 저장
  3. leftright 사이에 0() 저장

🫡 코드2

class Solution {
    public String solution(int[] food) {
        String left = "";
        String right = "";
        
        for(int i=1; i<food.length; i++){
            for(int j=0; j<food[i]/2; j++){
                left += Integer.toString(i);
            }
        }
        
        StringBuffer sb = new StringBuffer(left);
        right = sb.reverse().toString();
        
        left += "0";
        
        return left+right;
    }
}

🫡 풀이2

  1. 0()을 중심으로 1,2,3번째 음식의 수의 절반 만큼 left 에 먼저 저장
  2. left에 저장한 순서를 뒤집기 하면 되기 때문에
    StringBufferreverse()를 사용해서 right에 저장!
  3. leftright 사이에 0() 저장
profile
Just Do IT ------- 🏃‍♀️

0개의 댓글

관련 채용 정보