프로그래머스 알고리즘 Level 1 햄버거 만들기
2023. 1. 24. 23:01ㆍ알고리즘/문제
https://school.programmers.co.kr/learn/courses/30/lessons/133502#qna
첫 번째 풀이 - 문자열 접근 ( 2개의 케이스 시간 초과로 실패 )
class Solution {
fun solution(ingredient: IntArray): Int {
var answer: Int = 0
var copyIngredient = ingredient.joinToString("")
while (true) {
if (!copyIngredient.contains("1231")) break
else {
copyIngredient = copyIngredient.replaceFirst("1231", "")
answer++
}
}
return answer
}
}
문자열로 접근해서 contains 로 분기만들고
replaceFirst로 1231 삭제하고 반복
시간 초과 Error
두 번째 풀이 - 정답, 스택 개념
class Solution {
fun solution(ingredient: IntArray): Int {
var answer: Int = 0
val list = mutableListOf<Int>()
ingredient.forEach {
list.add(it)
val size = list.size
if (size > 3) {
if (list.elementAt(size - 1) == 1 && list.elementAt(size - 2) == 3 && list.elementAt(size - 3) == 2 && list.elementAt(
size - 4
) == 1
) {
repeat(4, action = {list.removeLast()})
answer++
}
}
}
return answer
}
}
mutableList 하나 만들어주고
ingredient 반복시킴.
list에 넣고
끝에서 4개만 확인함
1321이면 마지막 아이템 삭제 4번 반복
answer 하나 올리고
반복문 다 돌면 끝
시간 초과 해결
'알고리즘 > 문제' 카테고리의 다른 글
프로그래머스 알고리즘 Level 1 코틀린 2021 KAKAO BLIND RECRUITMENT신규 아이디 추천 (0) | 2023.01.25 |
---|---|
프로그래머스 알고리즘 Level 1 코틀린 2022 카카오 TECH INTENSHIP 성격 유형 검사하기 문제 (0) | 2023.01.25 |
프로그래머스 Level 1 코틀린 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 (0) | 2023.01.24 |
프로그래머스 알고리즘 Level 1 코틀린 문자열 나누기 (2) | 2023.01.23 |
프로그래머스 알고리즘 Level 1 과일 장수 (0) | 2023.01.23 |