-
프로그래머스: 햄버거코딩테스트 문제 풀이/프로그래머스 2023. 11. 23. 00:09
프로그래머스 첫번째
다른사람 코드 _class Solution { public int solution(int[] ingredient) { int[] stack = new int[ingredient.length]; int sp = 0; int answer = 0; for (int i : ingredient) { stack[sp++] = i; if (sp >= 4 && stack[sp - 1] == 1 && stack[sp - 2] == 3 && stack[sp - 3] == 2 && stack[sp - 4] == 1) { sp -= 4; answer++; } } return answer; } }
우와 기본 자료형 배열을 이용해서 가볍게 풀이된 코드이다. 내 코드보다 계산 속도가 최대 40ms 더 단축되었다.
내 코드
import java.util.*; class Solution { public int solution(int[] ingredient) { int answer = 0; ArrayList<Integer> temp = new ArrayList(); for (int i: ingredient) { temp.add(i); int size = temp.size(); if (size >= 4 && temp.get(size - 1) == 1 && temp.get(size - 2) == 3 && temp.get(size - 3) == 2 && temp.get(size - 4) == 1) { temp.remove(--size); temp.remove(--size); temp.remove(--size); temp.remove(--size); answer++; } } return answer; } }
이번 문제로 많은 것을 배움 📝🤓
- for문 안에서 size를 1씩 증가(size++)시킨 후 if문에서 size 값을 검사하는게 size 변수에 ArrayList.size()를 매번 담아서 if문에서 검사하는것 보다 더 오래 걸렸다.
- ArrayList의 특정 인덱스를 remove 하는것보다 add(특정_인덱스, 새로운_값) 하는것이 시간이 더 오래 걸렸다.
- String 연산을 하는것은 연산 횟수가 적을때는 괜찮지만, 횟수가 많아지면 엄청 무거운 연산이 된다.
'코딩테스트 문제 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스: 덧칠하기 (0) 2023.11.24 프로그래머스: 2016년 (0) 2023.11.23 프로그래머스 : 신규 아이디 추천 (0) 2023.11.23 프로그래머스 : 신고 결과 받기 (0) 2023.11.23 프로그래머스: 옹알이(2) (0) 2023.11.23