Dev/Algorithm

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

VIPeveloper 2024. 5. 24. 16:04
728x90
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/134240

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

생각

// 1. food size 를 /2 *2 해주기
// 2. 두개의 for문을 돌며 answer += "1" 해주기

코드

public class Main {
    public static void main(String[] args) {
        System.out.println(solution(new int[] {1, 3, 4, 6})); // 2
    }
    public static String solution(int[] food) {
        String answer = "";
        // 1. food size 를 /2 *2 해주기
        for (int i = 1; i < food.length; i++) {
            food[i] = (food[i]/2)*2;
        }
        // 2. 두개의 for문을 돌며 answer += "1" 해주기
        for (int i = 1; i < food.length; i++) {
            if(food[i]!=0) {
                int i1 = food[i];
                while (i1>0 && i1 != food[i]/2){
                    i1--;
                    answer+=i;
                }
            }
        }
        answer+="0";
        for (int i = food.length-1; i >= 1; i--) {
            if(food[i]!=0) {
                int i1 = food[i];
                while (i1>0 && i1 != food[i]/2){
                    i1--;
                    answer+=i;
                }
            }
        }

        return answer;
    }
}

다른 사람 풀이

  • 창의적인 발상이어서 놀랐다.
  • 중앙에서 뻗어나가는 방식을 어떻게 생각했을까?
public class Main {
    public static void main(String[] args) {
        System.out.println(solution(new int[] {1, 3, 4, 6})); // 2
    }
    public static String solution(int[] food) {
        String answer = "0";

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

        return answer;
    }
}
728x90
반응형