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
반응형