본문 바로가기
알고리즘/프로그래머스

[프로그래머스] Lv2. 땅따먹기

by 1two13 2023. 3. 28.
728x90
반응형

다시 풀어도 모르겠고, 답을 봐도 모르겠다!!!

그래서 기록하기,,

 

 

문제 링크


 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

조건


  • 땅은 총 N행 4열이다.
  • 한 행씩 내려올 때 같은 열은 연속해서 밟을 수 없다.

 

 

정답 코드


function solution(land) {
  let answer = 0;

  for (let i = 1; i < land.length; i++) {
    for (let j = 0; j < 4; j++) {
      // 얕은 복사본(원본 배열 수정 X)
      let arr = land[i - 1].slice();
      // 그 전 열의 값을 가장 낮은값으로 설정(같은 열을 지날수 없다.)
      arr[j] = 0;
      // 다음 행이랑 비교해서 가장 큰 값 구하기(현재 행의 가장 큰 값 + 다음 행의 가장 큰 값)
      land[i][j] += Math.max.apply(null, arr);
      answer = Math.max(land[i][j], answer);
    }
  }

  return answer;
}

1. 현재 행에서 본인의 열은 0으로 설정하고(같은 열은 지날 수 없기 때문에 최솟값인 0으로 설정)

2. 현재 행의 최댓값과 다음 행의 열을 더해주고

3. answer는 계속 최댓값으로 갱신시켜 주면 된다.

 

디버깅하면서 결과를 하나하나 확인해줬다. 시간은 많이 소요되었지만 어쨌든 이해하고 넘어가서 기분이 좋다. 

 

 

참고자료


 

 


질문이나 잘못된 점은 댓글로 남겨주세요 :)💖

반응형
728x90
반응형

댓글