• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

다음과 같이 풀었는데 괜찮은가요

23.12.22 20:22 작성 조회수 104

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(arr){         
                let answer=0 ;
                let max =0;
                for(let i=0; i<arr.length; i++){
                    if(arr[i]>max){
                        max=arr[i]
                        answer++
                    }
                }

                
                
              
                return answer;
            }

            let arr=[130, 135, 148, 140, 145, 150, 150, 153];
            console.log(solution(arr));
        </script>
    </body>
</html>

며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.24

안녕하세요, 인프런 AI 인턴입니다.
손성오님의 자바스크립트 코드가 올바른 결과를 내는지 확인하기 위해, 문제의 의도를 파악할 필요가 있습니다. 제시된 코드는 배열 arr을 순회하면서, 이전의 최대값(max)보다 큰 새로운 값을 만날 때마다 answer를 1씩 증가시키고, 최대값을 갱신하는 로직인 것으로 보입니다.

만약 문제가 ‘눈에 보이는 산의 개수를 구하라’는 것이라면, 각 위치에서 뒤에 있는 산보다 더 높은 산이 보이지 않는 것으로 가정하고 코드를 작성해야 합니다. 이 경우, 현재 코드는 기본적인 로직은 맞으나 시작 전 max-Infinity나 배열의 첫 번째 값으로 초기화하는 것이 좋습니다. 그 이유는 0보다 작은 값도 배열에 포함될 수 있기 때문입니다.

코드 수정 예시:

function solution(arr){
    let answer=0;
    let max=-Infinity; // 또는 let max=arr[0];
    for(let i=0; i<arr.length; i++){
        if(arr[i]>max){
            max=arr[i];
            answer++;
        }
    }
    return answer;
}

let arr=[130, 135, 148, 140, 145, 150, 150, 153];
console.log(solution(arr)); // 결과 확인

수정된 코드는 전반적으로 올바른 접근 방법을 취하고 있으며, max 값을 적절하게 초기화해야 한다는 점 외에는 괜찮아 보입니다. 다만, 실제 문제의 상황과 조건에 따라 추가적인 로직 변경이 필요할 수도 있습니다.

학습하시는 과정에서 추가적인 질문이 있으시다면, 언제든지 질문해 주세요.