[백준 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
[2021 KAKAO BLIND RECRUITMENT] 합승 택시 요금  (0) 2021.05.08
'알고리즘 문제풀이' 카테고리의 다른 글
  • [백준 1034] 램프
  • [백준 1027] 고층 건물
  • [백준 15954] 인형들
  • [백준 1188] 음식 평론가
WildDevmon
WildDevmon
『앗! 야생의 개발몬(이)가 나타났다!』
  • WildDevmon
    야생의 개발몬
    WildDevmon
  • 전체
    오늘
    어제
    • 분류 전체보기 (35)
      • Server (5)
      • 알고리즘 문제풀이 (27)
      • 회고 (3)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네카라쿠배 취업
    preStop
    소가 길을 건너간 이유 5
    백준 5347
    선발 명단
    백준1238
    네이티브 메모리
    백준 1034
    백준1188
    백준 램프
    백준 10610
    우아한 종료
    백준15954
    백준 인형들
    백준 파티
    백준2262
    카카오 필요스펙
    백준 1114
    백준 1114 파이썬
    파이썬
    백준 1027
    자바 프로세스 종료
    자바 물리 메모리
    백준 30
    백준 경쟁적 전염
    소수&팰린드롬
    통나무 자르기
    2020 카카오 인턴
    백준 1004
    백준 17281
    다이렉트 버퍼
    백준 어린 왕자
    자바 스레드 상태
    컴공 취준
    합승 택시 요금
    terminationGracePeriodSeconds
    백준6980
    1114백준
    백준1747
    백준 고층 건물
    자바 최소공배수
    백준14465
    경력 서류
    graceful shutdown
    코틀린 코루틴
    자바 최대공약수
    커널 스레드 상태
    ai개발자
    direct buffer
    백준 18405
  • 최근 댓글

  • 최근 글

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

티스토리툴바