제쿵
작은 책방
제쿵
전체 방문자
오늘
어제
  • 분류 전체보기 (34)
    • SideProject (3)
    • Diary (1)
    • Algorithm (1)
    • Smarteer Suppoters (15)
      • Project (5)
      • Study (7)
      • Journal (3)
    • Fish (11)
    • Guitar (1)

블로그 메뉴

  • 홈

공지사항

인기 글

hELLO · Designed By 정상우.
제쿵

작은 책방

[백준] 터렛
Algorithm

[백준] 터렛

2022. 8. 29. 06:26

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

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

 

 

repeat = input()
for i in range(0,int(repeat)):
    num_list = list(map(int, input().split()))
    x1 = num_list[0]
    y1 = num_list[1]
    r1 = num_list[2]

    x2 = num_list[3]
    y2 = num_list[4]
    r2 = num_list[5]

    distance = (((((x2 -x1)**2)+((y2-y1)**2))) ** (1/2))
    longLine = 0;
    ## 빗변 찾기
    if r1>r2:
        longLine = r1;
        twoLine = distance + r2;
    else :
        longLine = r2;
        twoLine = distance+r1;

    if longLine < distance :
        longLine = distance;
        twoLine = r1+r2;

	## 출력 시작
    if longLine>twoLine:
        print(0)

        # 모두 같은 경우
    elif distance == 0:
        # 거리가 0인경우, 같은 점이니까 1개
        if r1 == 0:
            print(1)

        elif r1 != r2:
            print(0)

        # 거리가 다른 경우, 점 중심으로 거리가 r인 원 생성, 무한
        else:
            print(-1)

    # 직선 거리인 경우
    elif distance == r1+r2:
        print(1)

    # 한쪽 점을 넘어선 직선거리 일 경우
    elif (r2-r1) == distance or (r1-r2) == distance:
        print(1)

    # 2개
    else:
        print(2)

 

1일차 : 왜 틀린지 인지 못함

 

2일차 : 모든 케이스 다 했다고 생각했는데 실제론 케이스 하나 빼먹음.

 

 

입력 : 0 0 5 2 0 2

출력 : 0

 

내 출력 : 2

 

질문 게시판에 있는 케이스였는데

원 안에서 다른 원이 내접하지 못하는 케이스였다.

사실 정상적인 코드였으면 이 케이스도 걸러낼 수 있어야했는데

 

삼각형의 성립조건을 이상하게 걸어놨었다.

r1, r2, distance중 어떤 선이 빗변인지 생각을 안하고

생각없이

distance > r1+r2 이런식으로 해놨던 것이다.

그래서 아래 코드 추가했다.

 if r1>r2:
        longLine = r1;
        twoLine = distance + r2;
    else :
        longLine = r2;
        twoLine = distance+r1;

    if longLine < distance :
        longLine = distance;
        twoLine = r1+r2;

    if longLine>twoLine:
        print(0)

 

 

 

 

제쿵
제쿵
한 색은 갑자기 다른 색을 비춘다.

티스토리툴바