[프로그래머스(Programmers)][Java,Python] (Lv1) 햄버거 만들기

728x90

 

https://school.programmers.co.kr/learn/courses/30/lessons/133502?language=java#

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

1. Java

import java.util.*;
class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        List<Integer> list = new ArrayList<>();
        for ( int i : ingredient ) {
            list.add(i);
        }
        int[] hamburger = {1, 2, 3, 1};
        int i = 0;
        int n = ingredient.length - hamburger.length + 1;
        while ( i <= n ) {
            boolean able = true;
            for ( int j = 0; j < hamburger.length; ++j ) {
                if ( list.get(i + j) != hamburger[j] ) {
                    able = false;
                    break;
                }
            }
            if ( able ) {
                for ( int j = 0; j < hamburger.length; ++j ) {
                    list.remove(i);
                }
                answer++;
                n -= hamburger.length;
                if ( i - hamburger.length >= -1 ) {
                    i -= hamburger.length;
                } else {
                    i = -1;
                }
            }
            i++;
        }
        return answer;
    }
}
더보기
import java.util.*;
class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        int[] hamburger = {1, 2, 3, 1};
        int idx_s = -1, idx_e = -1;
        for ( int i = 0; i < ingredient.length; ++i ) {
            if ( ingredient[i] == 1 ) {
                idx_s = i;
                break;
            }
        }
        for ( int i = ingredient.length-1; i >= 0; --i ) {
            if ( ingredient[i] == 1 ) {
                idx_e = i;
                break;
            }
        }
        List<Integer> list = new ArrayList<>();
        if ( idx_s < 0 ) {
        } else {
            for ( int i = idx_s; i <= idx_e; ++i ) {
                list.add(ingredient[i]);
            }
        }
        outer:
        while ( list.size() >= hamburger.length ) {
            idx_s = -1; idx_e = -1;
            boolean able = false;
            for ( int i = 0; i < list.size(); ++i ) {
                if ( list.get(i) == 1 ) {
                    idx_s = i;
                    idx_e = i + hamburger.length - 1;
                    able = true;
                    if ( idx_s < 0 || idx_e >= list.size() ) {
                        break outer;
                    }
                    int k = 0;
                    boolean next = true;
                    for ( int j = idx_s; j <= idx_e; ++j ) {
                        if ( list.get(j) != hamburger[k++] ) {
                            next = false;
                            break;
                        }
                    }
                    if (next) {
                        answer++;
                        for ( int j = idx_e; j >= idx_s; --j ) {
                            list.remove(j);
                        }
                        continue outer;
                    }
                }
            }
            if (!able) {
                break;
            }
        }
        return answer;
    }
}
import java.util.*;
import java.util.regex.*;
class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        String hamburger = "1231";
        String material = "";
        for ( int i : ingredient ) {
            material += i;
            if ( material.indexOf(hamburger) > -1 ) {
                answer ++;
                material = material.replaceAll(hamburger, "");
            }
        }
        return answer;
    }
}
import java.util.*;
class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        String hamburger = "1231";
        String material = "";
        for ( int i : ingredient ) {
            material += i;
            if ( material.length() >= hamburger.length() ) {
                if ( material.substring(material.length()-hamburger.length(),material.length()).equals(hamburger) ) {
                    answer++;
                    material = material.substring(0,material.length()-hamburger.length());
                }
            }
        }
        return answer;
    }
}

 

2. Python

def solution(ingredient):
    answer = 0
    list = []
    for i in ingredient :
        list.append(i)
    hamburger = [1, 2, 3, 1]
    i = 0
    n = len(ingredient) - len(hamburger) + 1
    while i <= n :
        able = True
        for j in range(len(hamburger)) :
            if list[i + j] != hamburger[j] :
                able = False
                break
        if able == True :
            for j in range(len(hamburger)) :
                list.pop(i)
            answer += 1
            n -= len(hamburger)
            if i - len(hamburger) >= -1 :
                i -= len(hamburger)
            else :
                i = -1
        i += 1
    return answer

 

반응형