광산김가네

[구름톤 챌린지]4일차 문제 풀이 본문

TIL(Today I Learn)

[구름톤 챌린지]4일차 문제 풀이

MinseoKim 2023. 8. 19. 23:56

1-3일차 문제는 평이해서 4일차만 기록했습니다:)

📌4일차 | 완벽한 햄버거 만들기

문제 내용

햄버거 맛을 의미하는 숫자가 공백을 기준으로 주어지는데,

높은수를 기준으로 위와 아래로 갈수록 맛의 크기가 감소하거나 같아야한다.

만약 위의 기준을 벗어난다면 맛은 0이되고, 아니라면 맛을 모두 더하여 출력하면 된다

로직 설계

시도1)

처음에 생각했을때는 절댓값 그래프처럼 꼭짓점이 하나만 있는 형태만 통과가 되어야하고,

아닌 경우에는 죄다 통과가 안되는구나! 생각했다

 

물론 맛의 크기가 같아도 통과가 해야기때문에 if문 조건을 위, 아래(리스트 index 상으로 1 차이나는 요소)맛이 클때, 작을때, 같을때

3개로 나눠주었다. 

 

이제 크거나 같을때 내부에서 맛있는 햄버거(=조건에 잘맞는가)인지 판별하기 위해 Boolean 타입 변수를 2개를 두었다

상승, 향상의 경우에 따라 해당 boolean 타입의 변수의 상태를 바꿔주는 식으로 구현해주었다.

 

또한 상승,향상이 순서대로 바뀌기 때문에 count라는 int 변수도 두었다.

코드로 구현하면 아래와 같다

  if(ascend == false && count ==0){
            ascend = true 
            descend = false
            flavor += hamburger[ham]
            count += 1
            
            // println("${hamburger[ham]}에서는 $descend $ascend")
 }else{
    //ascend==true일때는
    //1. 잘 상승하고있을때
    if(descend == true){
       flavor = 0
       break 
    }
    flavor += hamburger[ham]
    // println("${hamburger[ham]}에서는 $descend $ascend")
 }

 

[문제점]

로직상으로 문제가 없다고 생각했는데..

그러면 테스트케이스 17번만 통과를 못했다ㅠㅠ

테케의 예외사항을 알수없었기때문에 다른 로직으로 고려를해봤다

시도2)

정렬하여 최대값을 기준으로 자료구조를 2개로 나눴다

나눠서 2개의 자료구조가 각각 정렬이 되어있는지만 판별하면 되는 문제라

쉽게 해결할 수 있었다!

느낀점

뭔가 그래프쪽으로만 생각을하고자료구조를 분리할 생각을 못해서 좀 오래 걸렸던 문제인것같다근데 핵심 키워드가 최대값, 감소, 증가가 있었기때문에 정렬을 생각했어야 했던 것 같다ㅎ.ㅎ