본문 바로가기
공부/알고리즘

[0531] 알고리즘

by Piva 2021. 5. 31.

  이걸 알고리즘이라 할 수 있나...? 그냥 백준에서 푼 간단한 문제...

 


2798. 블랙잭

  그냥 브루트포스 문제... 중간에 이상한 곳에서 실수해서 삽질 좀 했는데 아무튼...

#include <iostream>

int main()
{
    int n, m;
    int sum = 0, max = 0;

    std::cin >> n;
    std::cin >> m;

    int cards[n];

    for (int i = 0; i < n; i++)
    {
        std::cin >> cards[i];
    }

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

        if (cards[i] < m)
        {
            sum += cards[i];
        }
        else continue;

        for (int j = i + 1; j < n; j++)
        {
            if (sum + cards[j] < m)
            {
                sum += cards[j];

                for (int k = j + 1; k < n; k++)
                {
                    if (sum + cards[k] <= m)
                    {
                        sum += cards[k];

                        if (sum > max)
                        {
                            max = sum;
                        }
                        sum -= cards[k];
                    }
                }
                sum -= cards[j];
            }
        }
    }
    std::cout << max << '\n';

    return 0;
}

 

 

1002. 터렛

  중딩들 수학이었나? 거기 나오는 원의 위치관계 이용하는 문제... 인데 한 원이 다른 원 안에 있는 경우를 뒤늦게 생각해내서 또 삽질함.

#include <iostream>
#include <cmath>
int main()
{
  int x1, x2, y1, y2, r1, r2, testCase;

  std::cin >> testCase;
  
  for (int i = 0; i < testCase; i++)
  {
    std::cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;

    if (x1 == x2 && y1 == y2)
    {
      if (r1 != r2)
        std::cout << 0 << '\n';

      else std::cout << -1 << '\n';
      continue;
    }

    if (pow(x2 - x1, 2) + pow(y2 - y1, 2) == pow(r1 + r2, 2))
    {
      std::cout << 1 << '\n';
      continue;
    }    

    if (pow(x2 - x1, 2) + pow(y2 - y1, 2) > pow(r1 + r2, 2))
    {
      std::cout << 0 << '\n';
      continue;
    }

    if (pow(x2 - x1, 2) + pow(y2 - y1, 2) < pow(r1 + r2, 2))
    {
      if (pow(x2 - x1, 2) + pow(y2 - y1, 2) == pow(r1 - r2, 2))
        std::cout << 1 << '\n';

      else if (pow(x2 - x1, 2) + pow(y2 - y1, 2) < pow(r1 - r2, 2))
        std::cout << 0 << '\n';

      else std::cout << 2 << '\n';
      continue;
    }
  }

  return 0;  
}

'공부 > 알고리즘' 카테고리의 다른 글

[0605~0606] 알고리즘  (0) 2021.06.07
[0601] 알고리즘  (0) 2021.06.01
[0530] 알고리즘  (0) 2021.05.30
[0529] 알고리즘  (0) 2021.05.29
과제 5  (1) 2021.01.05