기록하지 않았다면 잃어버릴 시간들
Home
  • 분류 전체보기 (184)
    • Lang (6)
      • c++ (2)
      • Java (2)
      • python (2)
    • 프레임워크 (18)
      • Spring (16)
      • JPA (2)
    • 알고리즘 (141)
      • 이론 (4)
      • 백준 (59)
      • Codility (13)
      • 프로그래머스 (65)
    • CS (4)
      • 운영체제 (0)
      • 자료구조 (0)
      • DB (4)
      • 네트워크 (0)
      • 보안 (0)
    • 기타 (7)
    • 프로젝트 (4)
      • 게시판 만들기로 배우는 Spring Data JP.. (4)
Home
  • 분류 전체보기 (184)
    • Lang (6)
      • c++ (2)
      • Java (2)
      • python (2)
    • 프레임워크 (18)
      • Spring (16)
      • JPA (2)
    • 알고리즘 (141)
      • 이론 (4)
      • 백준 (59)
      • Codility (13)
      • 프로그래머스 (65)
    • CS (4)
      • 운영체제 (0)
      • 자료구조 (0)
      • DB (4)
      • 네트워크 (0)
      • 보안 (0)
    • 기타 (7)
    • 프로젝트 (4)
      • 게시판 만들기로 배우는 Spring Data JP.. (4)
블로그 내 검색

기록하지 않았다면 잃어버릴 시간들

새로운 것을 배우는게 즐거운 개발자입니다.

  • 알고리즘/프로그래머스

    Programers 도둑질

    2022. 3. 12.

    by. 내이름은 킹햄찌

    https://programmers.co.kr/learn/courses/30/lessons/42897

     

    코딩테스트 연습 - 도둑질

    도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한

    programmers.co.kr

    프로그래머스 도둑질 문제입니다.

     

    #include <string>
    #include <vector>
    
    using namespace std;
    int max(int a,int b){
        return a>b?a:b;
    }
    int solution(vector<int> money) {
        vector<int> dp1(money.size(),0);
        vector<int> dp2(money.size(),0);
        dp1[0] = money[0];
        dp1[1] = money[0];
        dp2[1] = money[1];
        
        //첫번째 -> 마지막전
        for(int i = 2; i<dp1.size()-1;i++){
            dp1[i] = max(dp1[i-1], dp1[i-2] + money[i]);
        }
        //두번째 -> 마지막
        for(int i = 2; i<dp1.size();i++){
            dp2[i] = max(dp2[i-1], dp2[i-2] + money[i]);
        }
        
        int answer = max(dp1[dp1.size()-2], dp2[dp2.size()-1]);
        return answer;
    }

    아이디어

    이 문제를 처음 풀이 했을때는 동그랗게 배치되어 있다는 것을 간과하고 단순하게 점화식을 세워서 호되게 혼났다

    동그란 배치때문에 첫번째 집과 마지막 집이 인접한 집으로 처리를 할 방법을 고민해야 했음

    한번의 점화식으로 해결하는 방법을 찾지 못하고 첫번째를 털때는 마지막집을 방문하지않고, 두번째집을 털때는 마지막집까지 방문하는 두개의 경우의 수로 나누어서 처리 했음

     

    '알고리즘 > 프로그래머스' 카테고리의 다른 글

    Programers 프린터  (0) 2022.03.12
    Programers 기능개발  (0) 2022.03.12
    Programers 등굣길  (0) 2022.03.12
    Programers 정수 삼각형  (0) 2022.03.12
    Programers N으로 표현  (0) 2022.03.12

    댓글

    관련글

    • Programers 프린터 2022.03.12
    • Programers 기능개발 2022.03.12
    • Programers 등굣길 2022.03.12
    • Programers 정수 삼각형 2022.03.12
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
내이름은 킹햄찌

티스토리툴바