[C++] 백준 2485번 : 가로수

wldud·2024년 12월 17일
0

알고리즘

목록 보기
31/34

처음에 lastNum 대신에 벡터로 뒤에 계속 숫자를 넣어줬었는데 그거 때문에 메모리 초과가 되었다. 마지막 값만 필요해서 굳이 벡터를 사용할 필요가 없는데 반복해서 최기화하고 내부에 값을 넣는것이 문제였던 것 같다. 항상 메모리는 신경 안쓰고 문제를 풀었는데 이제는 메모리도 신경쓰면서 풀어야겠다...

#include <iostream>
#include <vector>

using namespace std;

int main(void){
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);


  int n;
  int k;
  int min = 1000000000;
  int result;
  bool right = false;
  bool pass;
  int lastNum;

  cin>>n;

  vector<int> vnum;

  for(int i=0;i<n;i++){
    int num;
    cin>>num;
    vnum.push_back(num);

    if(i != 0){
      if(min > vnum[i] - vnum[i-1]){
        min = vnum[i] - vnum[i-1];
      }
    }
  }

    while(1){
      lastNum = vnum[0];
      pass = false;
      result = 0;

      for(int i=0;i<n-1;i++){

        while(1){
          k = lastNum + min;

          if(k > vnum[i+1]){
            pass = true;
            break;
          } else if(k == vnum[i+1]){
            lastNum = k;
            break;
          }else{
            result++;
            lastNum = k;
          }
        }

        if(pass){
          break;
        }
      }
      min--;
      if(pass)continue;

      cout<<result<<'\n';
      break;
    }


}

0개의 댓글