본문 바로가기
알고리즘/프로그래머스

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

by KDW999 2023. 1. 1.

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;
    }
}

댓글