Algorithm/Baekjoon

[๋ฐฑ์ค€ 26152] C++ - ์ถœ๋ ฅ ์ดˆ๊ณผ ๋ฌธ์ œ ๋ฐœ์ƒ

say! 2024. 7. 13. 16:15
728x90

 

๐ŸŸกํ‹€๋ฆฐ ์ฝ”๋“œ - ๋ฌธ์ œ ์ดํ•ด ๋ถ€์กฑ

์ฒ˜์Œ์—๋Š” ๊ทธ๋ƒฅ ์žฅ์• ๋ฌผ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ณด๋‹ค ํ”Œ๋ž˜ํ”ผ ๋ฒ„๋“œ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๊ฒฝ์šฐ๋งŒ ๊ตฌํ•ด๋ฒ„๋ ธ๋‹ค.

์žฅ์• ๋ฌผ์— ๋‹ฟ์œผ๋ฉด ๊ฒŒ์ž„์ด ๋๋‚œ๋‹ค๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

//๋ฐฑ์ค€ 26152 - ํ”Œ๋ž˜ํ”ผ ๋ฒ„๋“œ ์Šค์ฝ”์–ด๋ง
#include <cstdio>

int main(){
  int n;  // ์žฅ์• ๋ฌผ ๊ฐœ์ˆ˜ ์ž…๋ ฅ
  scanf("%d", &n);

  int* a = new int[n];  // ์ƒ๋‹จ ์žฅ์• ๋ฌผ ์œ„์น˜ ์ž…๋ ฅ
  for(int i = 0; i < n; i++){
    scanf("%d", &a[i]);
  }
  
  int b;  // ํ•˜๋‹จ ์žฅ์• ๋ฌผ ์œ„์น˜ ์ž…๋ ฅ
  int* dis = new int[n];  // ์žฅ์• ๋ฌผ ํ‹ˆ์ƒˆ
  for(int i = 0; i < n; i++){
    scanf("%d", &b);
    dis[i] = a[i] - b;
  }

  int q;  // ํ”Œ๋ž˜ํ”ผ ๋ฒ„๋“œ ๊ฐœ์ˆ˜
  scanf("%d", &q);

  int w;  // ํ”Œ๋ž˜ํ”ผ ๋ฒ„๋“œ ํฌ๊ธฐ
  int* score = new int[q];  // ์ ์ˆ˜ ์ €์žฅ
  for(int i = 0 ; i < q; i++){
    score[i] = 0;
    scanf("%d", &w);
    for(int j = 0; j < n; j++){
      if(w <= dis[j])  score[i]++; 
    }
    
  }

  for(int i = 0 ; i < q; i++){  // ์ตœ๋Œ€ ๊ฒŒ์ž„ ์Šค์ฝ”์–ด ์ถœ๋ ฅ
    printf("%d\n", score[i]);
  }
  return 0;
}

 

๐ŸŸก์ˆ˜์ • ์ฝ”๋“œ - break๋ฌธ์ถ”๊ฐ€

>> ์‹œ๊ฐ„ ์ดˆ๊ณผ

//๋ฐฑ์ค€ 26152 - ํ”Œ๋ž˜ํ”ผ ๋ฒ„๋“œ ์Šค์ฝ”์–ด๋ง
#include <cstdio>

int main(){
  int n;  // ์žฅ์• ๋ฌผ ๊ฐœ์ˆ˜ ์ž…๋ ฅ
  scanf("%d", &n);

  int* a = new int[n];  // ์ƒ๋‹จ ์žฅ์• ๋ฌผ ์œ„์น˜ ์ž…๋ ฅ
  for(int i = 0; i < n; i++){
    scanf("%d", &a[i]);
  }
  
  int b;  // ํ•˜๋‹จ ์žฅ์• ๋ฌผ ์œ„์น˜ ์ž…๋ ฅ
  int* dis = new int[n];  // ์žฅ์• ๋ฌผ ํ‹ˆ์ƒˆ
  for(int i = 0; i < n; i++){
    scanf("%d", &b);
    dis[i] = a[i] - b;
  }

  int q;  // ํ”Œ๋ž˜ํ”ผ ๋ฒ„๋“œ ๊ฐœ์ˆ˜
  scanf("%d", &q);

  int w;  // ํ”Œ๋ž˜ํ”ผ ๋ฒ„๋“œ ํฌ๊ธฐ
  int* score = new int[q];  // ์ ์ˆ˜ ์ €์žฅ
  for(int i = 0 ; i < q; i++){
    score[i] = 0;
    scanf("%d", &w);
    for(int j = 0; j < n; j++){
      if(w <= dis[j])  score[i]++;
      else break; 
    }
    
  }

  for(int i = 0 ; i < q; i++){  // ์ตœ๋Œ€ ๊ฒŒ์ž„ ์Šค์ฝ”์–ด ์ถœ๋ ฅ
    printf("%d\n", score[i]);
  }
  return 0;
}

 

else break; ๋ถ€๋ถ„๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋‹ค!

for(int j = 0; j < n; j++){
      if(w <= dis[j])  score[i]++;
      else break;
    }

 

๐ŸŸก ์ถœ๋ ฅ ์ดˆ๊ณผ ์ฝ”๋“œ

>>์™œ ์ถœ๋ ฅ ์ดˆ๊ณผ์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Œ....

//๋ฐฑ์ค€ 26152 - ํ”Œ๋ž˜ํ”ผ ๋ฒ„๋“œ ์Šค์ฝ”์–ด๋ง
#include <cstdio>
#include <algorithm>
using namespace std;
#include <map>

int main(){
  int n;  // ์žฅ์• ๋ฌผ ๊ฐœ์ˆ˜ ์ž…๋ ฅ
  scanf("%d", &n);

  int* a = new int[n];  // ์ƒ๋‹จ ์žฅ์• ๋ฌผ ์œ„์น˜ ์ž…๋ ฅ
  for(int i = 0; i < n; i++){
    scanf("%d", &a[i]);
  }
  
  int b;  // ํ•˜๋‹จ ์žฅ์• ๋ฌผ ์œ„์น˜ ์ž…๋ ฅ
  int* dis = new int[n];  // ์žฅ์• ๋ฌผ ํ‹ˆ์ƒˆ
  for(int i = 0; i < n; i++){
    scanf("%d", &b);
    dis[i] = a[i] - b;
  }

  int q;  // ํ”Œ๋ž˜ํ”ผ ๋ฒ„๋“œ ๊ฐœ์ˆ˜
  scanf("%d", &q);

   // ํ”Œ๋ž˜ํ”ผ ๋ฒ„๋“œ ํฌ๊ธฐ
  int* w = new int[q];
  int* w_sort = new int[q];

  map<int, int> birdScore;  //key๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

  for(int i = 0 ; i < q; i++){
    scanf("%d", &w[i]);
    birdScore[w[i]] = 0;
  }

  copy(w, w+q, w_sort);
  sort(w_sort, w_sort + q, greater<>()); 

  int i = 0, j = 0;
  while(w_sort[i]){
    if(w_sort[i] <= dis[j])  {
      birdScore[w_sort[i]]++;
    }
    else{
      i++;
      birdScore[w_sort[i]] += (j+1);
    }
    j++;
  }

 for(int i = 0; i < q; i++){  // ์ตœ๋Œ€ ๊ฒŒ์ž„ ์Šค์ฝ”์–ด ์ถœ๋ ฅ
    printf("%d\n", birdScore[w[i]]);
  }

  delete[] a;
  delete[] dis;
  return 0;
}

 

 

๐Ÿ”ต์ตœ์ข… ์ฝ”๋“œ