https://www.acmicpc.net/problem/1946

 

1946번: 신입 사원

첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성

www.acmicpc.net


문제를 제대로 안읽어서 몇분을 헤맨건지,, 

처음엔 서류/면접 순위를 점수로 생각해서 오름차순이 아닌 내림차순 정렬로 풀어서 틀리고..

습관처럼 지원자 숫자와 벡터를 전역변수로 선언해서 계속 틀렸습니다 라는 결과가 나왔다 ㅠㅠ

이 멍충이 ㅠㅠ  문제 제대로 읽자 !!!!! ᕕ( ᐛ )ᕗ

#include <bits/stdc++.h>
using namespace std;

int t;

int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin>>t;
  while(t--){
      int n;
      cin>>n;
      vector<pair<int,int>> vec;
      for(int i=0; i<n; i++){
          int x,y;
          cin>>x>>y;
          vec.push_back({x,y});
      }
      sort(vec.begin(), vec.end());
      
      int ans = 1;
      int temp = vec[0].second;
      for(int i=1; i<n; i++){
          if(temp > vec[i].second){
              ans ++;
              temp = vec[i].second;
          }
      }
      cout<<ans<<'\n';
  }
}

 

'Algorithm > BOJ' 카테고리의 다른 글

[c++] 백준 2437 저울  (0) 2021.01.11
[c++] 백준 1541 잃어버린 괄호  (0) 2021.01.08
[c++] 백준 1931 회의실 배정  (0) 2021.01.07
[c++] 백준 11047 동전 0  (0) 2021.01.07
[c++] 백준 2156 포도주 시식  (0) 2021.01.06

https://www.acmicpc.net/problem/1931

 

1931번: 회의실 배정

(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.

www.acmicpc.net


- 회의가 빨리 끝나는 회의로 선택

- 끝나는 시간이 같다면 시작 시간이 빠른 회의 선택

시작 시간과 끝나는 시간을 바꿔서 넣으며 정렬 진행 

=> 다음 선택될 회의는 현 시간 과 시작시간이 같거나 이상이어야 한다

#include <bits/stdc++.h>
using namespace std;


vector<pair<int,int>> vec;
int n;

int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin>>n;
  for(int i=0; i<n; i++){
    int s,e;
    cin>>s>>e;
    vec.push_back({e,s});
    
  }
  sort(vec.begin(), vec.end());

  int num = 0;
  int t = 0;

  for(int i=0; i<n; i++){
    if(t > vec[i].second) continue;
    num++;
    t = vec[i].first;
  }
  cout<<num;
}

'Algorithm > BOJ' 카테고리의 다른 글

[c++] 백준 1541 잃어버린 괄호  (0) 2021.01.08
[c++] 백준 1946 신입사원  (0) 2021.01.08
[c++] 백준 11047 동전 0  (0) 2021.01.07
[c++] 백준 2156 포도주 시식  (0) 2021.01.06
[c++] 백준 2193 이친수  (0) 2021.01.06

https://www.acmicpc.net/problem/11047

 

11047번: 동전 0

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)

www.acmicpc.net


DP 하기 싫어서 그리디로 도망 

#include <bits/stdc++.h>
using namespace std;

int a[10];
int n,k;

int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin>>n>>k;
  for(int i=0; i<n; i++){
    cin>>a[i];
  }
  int num =0;
  for(int i=n-1; i>=0; i--){
    int t = k/a[i];
    num += t;
    k -= a[i]*t;
  }
  cout << num;
}

'Algorithm > BOJ' 카테고리의 다른 글

[c++] 백준 1946 신입사원  (0) 2021.01.08
[c++] 백준 1931 회의실 배정  (0) 2021.01.07
[c++] 백준 2156 포도주 시식  (0) 2021.01.06
[c++] 백준 2193 이친수  (0) 2021.01.06
[c++] 백준 9095 1,2,3 더하기  (0) 2021.01.06

https://www.acmicpc.net/problem/2156

 

2156번: 포도주 시식

효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규

www.acmicpc.net


DP !!!!  

n번째 포도주를 마시지 않을 때 d[n-1]

n번째 포도주 마시고, n-1번째 마시지 않을 때 d[n-2] + s[n]

n번째 포도주 마시고, n-1 번째도 마실 때  (n-2까지 마시면 연속 3번이라 조건 x) 

                                         d[n-3] + s[n] + s[n-1] 

 

0번 연속 마실때, 1번 연속 , 2번 연속 총 3가지 모든 요소 중에 최댓값을 출력

 

감이 잡히는거 같으면서도,, 모르겠네,,,,,,, ㅇ<-< 

#include <bits/stdc++.h>
using namespace std;

int d[10005];
int s[10005];
int n;


int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin>>n;
  for(int i=1; i<=n; i++){
    cin>>s[i];
  }
  d[0] = 0;
  d[1] = s[1];
  d[2] = s[1]+s[2];

  for(int i=3; i<=n; i++){
    d[i] = max(max(d[i-1], d[i-2]+s[i]),d[i-3]+s[i]+s[i-1]);
  }
  cout<<d[n];
  
}

 

 

'Algorithm > BOJ' 카테고리의 다른 글

[c++] 백준 1931 회의실 배정  (0) 2021.01.07
[c++] 백준 11047 동전 0  (0) 2021.01.07
[c++] 백준 2193 이친수  (0) 2021.01.06
[c++] 백준 9095 1,2,3 더하기  (0) 2021.01.06
[c++] 백준 11727 2xn 타일링 2  (0) 2021.01.06

https://www.acmicpc.net/problem/2193

 

2193번: 이친수

0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않

www.acmicpc.net


DP.........

#include <bits/stdc++.h>
using namespace std;

long long d[91][2];

int n,m;
int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin>>n;
  d[1][0] = 0;
  d[1][1] = 1;
  for(int i=2; i<=n; i++){
    d[i][0] = d[i-1][0] + d[i-2][0];
    d[i][1] = d[i-1][1] + d[i-2][1];
  }
  cout<<d[n][0]+d[n][1];
  
}

'Algorithm > BOJ' 카테고리의 다른 글

[c++] 백준 11047 동전 0  (0) 2021.01.07
[c++] 백준 2156 포도주 시식  (0) 2021.01.06
[c++] 백준 9095 1,2,3 더하기  (0) 2021.01.06
[c++] 백준 11727 2xn 타일링 2  (0) 2021.01.06
[c++] 백준 11726 2xn 타일링  (0) 2021.01.06

https://www.acmicpc.net/problem/9095

 

9095번: 1, 2, 3 더하기

각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.

www.acmicpc.net


오늘도 DP 

#include <bits/stdc++.h>
using namespace std;

int n;
int d[300];

void func(int num){
  d[1] = 1;
  d[2] = 2;
  d[3] = 4;
  for(int i=4; i<=num; i++){
    d[i] = d[i-1]+d[i-2]+d[i-3];
  }
  cout<<d[num]<<'\n';
}

int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin>>n;
  for(int i=0; i<n; i++){
    int nu;
    cin>>nu;
    func(nu);
  }
  
}

'Algorithm > BOJ' 카테고리의 다른 글

[c++] 백준 2156 포도주 시식  (0) 2021.01.06
[c++] 백준 2193 이친수  (0) 2021.01.06
[c++] 백준 11727 2xn 타일링 2  (0) 2021.01.06
[c++] 백준 11726 2xn 타일링  (0) 2021.01.06
[c++] 백준 1149 RGB 거리  (0) 2021.01.05

https://www.acmicpc.net/problem/11727

 

11727번: 2×n 타일링 2

2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다.

www.acmicpc.net

 


DP.....ㅇ<-<

#include <bits/stdc++.h>
using namespace std;

int n;
int d[10005];

int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin>>n;

  d[1] = 1;
  d[2] = 3;
  d[3] = 5;
  d[4] = 11;

  for(int i=5; i<=n; i++)
    d[i] = (d[i-1]+d[i-2]*2)%10007;
  
  cout<<d[n];
  
}

'Algorithm > BOJ' 카테고리의 다른 글

[c++] 백준 2193 이친수  (0) 2021.01.06
[c++] 백준 9095 1,2,3 더하기  (0) 2021.01.06
[c++] 백준 11726 2xn 타일링  (0) 2021.01.06
[c++] 백준 1149 RGB 거리  (0) 2021.01.05
[c++] 백준 2597 계단오르기  (0) 2021.01.05

https://www.acmicpc.net/problem/11726

 

11726번: 2×n 타일링

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

www.acmicpc.net


DP!!!!!

#include <bits/stdc++.h>
using namespace std;


int n;
int d[10005];

int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin>>n;
  
  d[1] = 1;
  d[2] = 2;
  d[3] = 3;

  for(int i=4; i<=n; i++){
    d[i] = (d[i-1]+d[i-2])%10007;
  }

  cout<<d[n];
}

'Algorithm > BOJ' 카테고리의 다른 글

[c++] 백준 9095 1,2,3 더하기  (0) 2021.01.06
[c++] 백준 11727 2xn 타일링 2  (0) 2021.01.06
[c++] 백준 1149 RGB 거리  (0) 2021.01.05
[c++] 백준 2597 계단오르기  (0) 2021.01.05
[c++] 백준 11536 줄 세우기  (0) 2021.01.04

https://www.acmicpc.net/problem/1149

 

1149번: RGB거리

첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나

www.acmicpc.net


DP

#include <bits/stdc++.h>
using namespace std;

int n;
int d[1005][3];
int s[1005][3];

int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin>>n;
  
  for(int i=0; i<n; i++){
      cin>>s[i][0]>>s[i][1]>>s[i][2];
  }
  d[0][0] =s[0][0];
  d[0][1] =s[0][1];
  d[0][2] =s[0][2];

  for(int i=1; i<n; i++){
      d[i][0] = min(d[i-1][1], d[i-1][2])+s[i][0];
      d[i][1] = min(d[i-1][0], d[i-1][2])+s[i][1];
      d[i][2] = min(d[i-1][0], d[i-1][1])+s[i][2];
  }

cout<<min(min(d[n-1][0],d[n-1][1]),d[n-1][2]);
  
}

'Algorithm > BOJ' 카테고리의 다른 글

[c++] 백준 11727 2xn 타일링 2  (0) 2021.01.06
[c++] 백준 11726 2xn 타일링  (0) 2021.01.06
[c++] 백준 2597 계단오르기  (0) 2021.01.05
[c++] 백준 11536 줄 세우기  (0) 2021.01.04
[c++] 백준 10825 국영수  (0) 2021.01.04

https://www.acmicpc.net/problem/2579

 

2579번: 계단 오르기

계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점

www.acmicpc.net


DP는 역시 어려워 

점화식 파악하는게 가장 중요 포인트 

계단을 밟지 않는 것을 기준으로 진행하였기 때문에

결과 : 모든 계단의 합 - 밟지 않은 계단의 총 합의 최소값 

 

#include <bits/stdc++.h>
using namespace std;


int n;
int d[305];
int s[305];

int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin>>n;
  int num =0;
  for(int i=0; i<n; i++){
      cin>>s[i];
      num += s[i];
  }
  if(n<=2){
      cout<<n;
      return 0;
  }
  d[0] = s[0];
  d[1] = s[1];
  d[2] = s[2];
  
  for(int i=3; i< n-1 ; i++){
      d[i] = min(d[i-2], d[i-3])+s[i];
  }

  cout<<num-min(d[n-2],d[n-3]);
}

이번주 내내 DP만 판다............ㅇ<-<

'Algorithm > BOJ' 카테고리의 다른 글

[c++] 백준 11726 2xn 타일링  (0) 2021.01.06
[c++] 백준 1149 RGB 거리  (0) 2021.01.05
[c++] 백준 11536 줄 세우기  (0) 2021.01.04
[c++] 백준 10825 국영수  (0) 2021.01.04
[c++] 백준 11656 접미사 배열  (0) 2021.01.04

+ Recent posts