Baekjoon - 어린왕자

2025. 1. 19. 21:22·코딩테스트 연습
SMALL

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

 

GPT한테 물어보니 DFS/BFS로 어렵게 풀더라 그래서 나는 그냥 단순 구현으로 풀 수 있겠다 생각해서 그렇게 풀었다.

 

출발점과 도착점 사이에 몇 번의 행성계를 진입하고 이탈해야 하는지 구하는 문제다. 각 행성계는 원으로 주어지며, 두 점이 원의 내부에 있는지 여부를 확인하여 진입/이탈 횟수를 계산할 수 있따.

 

Algorithm

  1. 각 행성계에 대해 출발점과 도착점이 그 행성계를 포함하는지 여부를 확인합니다.
  2. 출발점과 도착점이 같은 행성계에 대해 포함되거나 포함되지 않는지 여부를 체크합니다.
  3. 출발점과 도착점의 상태가 다르면 진입/이탈이 발생한다고 판단하고, 그 횟수를 계산합니다.

 

Code

#include <iostream>
#include<cmath>

using namespace std;

bool distance(int a, int b, int c, int d, int r) {
	return (pow(a - c, 2) + pow(b - d, 2)) < pow(r, 2);
}

int main()
{
	int t;
	int cnt = 0;
	cin >> t;

	for (int i = 0; i < t; i++) {
		int x1, y1, x2, y2;
		cin >> x1 >> y1 >> x2 >> y2;

		int n;
		cin >> n;
		for (int j = 0; j < n; j++) {
			int cx, cy, cr;
			cin >> cx >> cy >> cr;

			bool start = distance(x1, y1, cx, cy, cr);
			bool end = distance(x2, y2, cx, cy, cr);

			if (start != end) {
				cnt++;
			}
		}
		cout << cnt << "\n";
		cnt = 0;
	}
	return 0;
}

 

 

Desciption

// 두 점 (a, b)가 원 (cx, cy, r) 내부에 있는지 확인하는 함수
bool distance(int a, int b, int cx, int cy, int r) {
  • distance 함수는 주어진 점 (a, b)가 원 (cx, cy)의 반지름 r 안에 있는지 확인하는 함수이다.
  • 함수의 매개변수는 a, b (점의 좌표), cx, cy (원의 중심 좌표), r (원의 반지름).
  • 반환값은 bool 타입으로, 점이 원 내부에 있으면 true, 아니면 false를 반환한다.
    return (pow(a - cx, 2) + pow(b - cy, 2)) < pow(r, 2);
}
  • pow(a - cx, 2)는 점 (a, b)와 원의 중심 (cx, cy) 간의 x좌표 차이의 제곱을 계산한다.
  • pow(b - cy, 2)는 y좌표 차이의 제곱을 계산한다.
  • 이 두 값의 합은 점 (a, b)와 원의 중심 (cx, cy) 간의 거리 제곱을 나타낸다.
  • pow(r, 2)는 원의 반지름 r의 제곱이다.
  • 점이 원의 내부에 있을 경우, 두 점 간의 거리 제곱이 원의 반지름 제곱보다 작을 것이다. 그래서 그 조건을 만족하면 true를 반환하고, 그렇지 않으면 false를 반환한다.

 

728x90

'코딩테스트 연습' 카테고리의 다른 글

Baekjoon - 피보나치 함수  (1) 2025.01.19
SW Expert Academy - 22795. 일곱 부하의 평균 D3  (1) 2025.01.13
SW Expert Academy - 2001. 파리 퇴치 D2  (1) 2025.01.10
SW Expert Academy - 1204. 최빈수 구하기 D2  (0) 2025.01.09
SW Expert Academy - 22979. 문자열 옮기기 D3  (0) 2025.01.08
'코딩테스트 연습' 카테고리의 다른 글
  • Baekjoon - 피보나치 함수
  • SW Expert Academy - 22795. 일곱 부하의 평균 D3
  • SW Expert Academy - 2001. 파리 퇴치 D2
  • SW Expert Academy - 1204. 최빈수 구하기 D2
알파 조
알파 조
공부 일기장
  • 알파 조
    Blue Ocean
    알파 조
  • 전체
    오늘
    어제
    • 분류 전체보기 (93)
      • Algorithm (9)
      • Data Structure (3)
      • Python (7)
      • 컴퓨터 구조 요약 (6)
      • 몰입 교육 (7)
      • JavaScript (1)
      • Vue.js (7)
      • 코딩테스트 연습 (40)
      • SpringBoot (9)
      • 데이터베이스 (2)
  • 블로그 메뉴

    • Home
    • Computer structure
    • Algorithm
    • SpringBoot
    • Vuejs
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    잔디 기부 캠페인
    항해99
    잔디 기부
    MSA 기초
    티스토리챌린지
    오블완
    Git
    리그오브레전드 #롤 #LOL #60프레임 버그 #GPU #윈도우10 #롤 60프레임 고정
    Udemy#Python#Bootcamp#Object and Data Structure Basics
  • hELLO· Designed By정상우.v4.10.3
알파 조
Baekjoon - 어린왕자
상단으로

티스토리툴바