[백준 1004] 어린왕자

2021. 5. 12. 22:08·알고리즘 문제풀이/백준

 

www.acmicpc.net/problem/1004

 

1004번: 어린 왕자

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주

www.acmicpc.net

import sys
import math
from collections import deque
input = sys.stdin.readline

T = int(input())

def is_in(p,x,y):
    cx,cy,r = p
    len_x = abs(x-cx)
    len_y = abs(y-cy)


    rg = math.sqrt(len_x**2 + len_y**2)

    if rg <= r:
        return True
    return False


def min_in_out(sx,sy,es,ey,planets):
    cnt = 0

    for p in planets:
        if is_in(p,sx,sy) and not is_in(p,es,ey):
            cnt+=1
        elif not is_in(p,sx,sy) and is_in(p,es,ey):
            cnt+=1
    return cnt


for _ in range(T):
    sx,sy,es,ey = map(int,input().split())
    n = int(input())
    planets = [list(map(int,input().split())) for i in range(n)]

    answer = min_in_out(sx,sy,es,ey,planets)
    print(answer)
    

풀이

다양한 방법으로 풀 수 있을 것 같은데 나는 아래와 같이 생각했다.

 

일단 한 원이 있다고 하자.

이 원안에 시작점과 끝점이 둘 다 존재하면 둘 사이에 경계가 없다.

또한 시작점과 끝점 둘 다 밖에 존재하면 둘 사이에 경계가 없다.

즉 시작점과 끝점 둘 중 하나만 안에있고 하나는 밖에 있을 때 경계가 생긴다.

 

점이 원 안에 존재하는지 체크하는 방법은 피타고라스 정리를 사용한다.

 

시작점 or 도착점 둘 중 하나만 포함되는 경우는 cnt+=1

cnt가 답이된다.

시간복잡도

원의 수만큼 로직을 돌리면 되기때문에 O(N)이다.

 

 

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 1034] 램프  (0) 2021.05.12
[백준 1027] 고층 건물  (0) 2021.05.12
[백준 15954] 인형들  (0) 2021.05.11
[백준 1188] 음식 평론가  (0) 2021.05.11
[백준 17218] ⚾  (0) 2021.05.07
'알고리즘 문제풀이/백준' 카테고리의 다른 글
  • [백준 1034] 램프
  • [백준 1027] 고층 건물
  • [백준 15954] 인형들
  • [백준 1188] 음식 평론가
check-mate
check-mate
모두 화이팅
  • check-mate
    야생의 개발몬
    check-mate
  • 전체
    오늘
    어제
    • 분류 전체보기 (32)
      • Server (1)
        • Spring Boot (1)
      • Computer Science (0)
        • 운영체제 (0)
        • 기타 (0)
        • 객체지향 (0)
        • 클린코드 (0)
      • Language (0)
        • JAVA (0)
      • 알고리즘 문제풀이 (27)
        • 백준 (20)
        • 프로그래머스 (7)
      • 기타 (4)
        • 회고 (3)
        • 대외활동 (1)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    클린코드 5장
    FeignClient 디코더
    이펙티브 자바 아이템 89
    자바 원시타입
    세마포와 뮤텍스
    오브젝트 7장
    SpringBootApplication
    멀티 큐
    이펙티브 자바 아이템 56
    경력 서류
    이펙티브 자바 아이템 84
    컴공 취준
    이펙티브 자바 아이템 51
    네카라쿠배 취업
    이펙티브 자바 아이템 55
    ai개발자
    파이썬
    이펙티브 자바 아이템 52
    이펙티브 자바 아이템 49
    프로세스 동기화
    멀티 레벨 피드백 큐
    이펙티브 자바 아이템54
    filter vs interceptor
    이펙티브 자바 아이템 58
    이펙티브 자바 아이템 57
    FeignClient
    이펙티브자바 아이템 78
    오브젝트 12장
    오브젝트 1장
    이펙티브 자바 아이템53
    오브젝트 3장
    오브젝트 8장
    프로세스
    클린코드 4장
    오브젝트 9장
    멀티 레벨 큐
    스프링과 스프링부트 차이
    클린코드 9장
    스프링 AOP
    Feign
    운영체제
    이펙티브 자바 아이템 90
    원시타입 장점
    DecodeException
    세마포어 뮤텍스 차이
    이펙티브자바 아이템64
    메일 시스템
    ResponseEntityDecoder
    AOP
    카카오 필요스펙
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
check-mate
[백준 1004] 어린왕자
상단으로

티스토리툴바