4839. [파이썬 S/W 문제해결 기본] 2일차 - 이진탐색

2023. 3. 5. 23:45·Algorithm/SW Expert Academy Review

D2

Problem

SW Expert Academy 이진탐색

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


Solution

1. 이진 탐색을 통해 원하는 값을 찾아보기
2. 이진 탐색을 위해 중앙값을 설정하고 이보다 작으면 왼쪽을 탐색, 크면 오른쪽을 탐색한다.
3. 탐색 속도를 올려주기 위해서, 찾고자 하는 값이 양 끝 값이면 바로 끝낸다.
4. 문제에서 중앙값을 계산하는 공식이 주어지기에 활용하자.
5. 카운트하는 위치를 주의하자.

Code

def binary_search(n, key):	# While로 구현
    cnt = 0
    start = 1
    end = n
    if 1 == key or n == key: # key가 양 끝 값인 경우
        return 0
    elif key > end or key < start: # 답이 나올 수 없는 경우
        return 0
    else:
        while start <= end:	# 가운데부터 탐색
            c = int((start + end) / 2)
            
            if c == key:		# 찾으면 끝냄
                break
            elif c > key:		# key가 중앙값보다 작으면 왼쪽 탐색
                end = c
                cnt += 1
            else:				# key가 중앙값보다 크면 오른쪽 탐색
                start = c
                cnt += 1
        return cnt				# 탐색한 횟수 리턴


for test_case in range(1, int(input()) + 1):
    P, A, B = map(int, input().split())
    a = binary_search(P, A)
    b = binary_search(P, B)
    print('#'+str(test_case), end=" ")
    if a > b:
        print('B')
    elif b > a:
        print('A')
    elif a==b:
        print('0')


<부족한 부분은 댓글로 남겨주시면 저에게 도움이 됩니다!>

반응형

'Algorithm > SW Expert Academy Review' 카테고리의 다른 글

1954. 달팽이 숫자  (0) 2023.03.06
1961. 숫자 배열 회전  (0) 2023.03.05
4843. [파이썬 S/W 문제해결 기본] 2일차 - 특별한 정렬  (0) 2023.03.05
1209. [S/W 문제해결 기본] 2일차 - Sum  (0) 2023.03.05
2001. 파리 퇴치  (0) 2023.03.05
'Algorithm/SW Expert Academy Review' 카테고리의 다른 글
  • 1954. 달팽이 숫자
  • 1961. 숫자 배열 회전
  • 4843. [파이썬 S/W 문제해결 기본] 2일차 - 특별한 정렬
  • 1209. [S/W 문제해결 기본] 2일차 - Sum
devSeongKu
devSeongKu
#FE_개발일지 #일상 #알고리즘
    • 분류 전체보기 (60)
      • Algorithm (41)
        • 개념 (8)
        • SW Expert Academy Review (22)
        • BaekJoon Review (11)
      • WEB (12)
        • HTML (5)
        • CSS (2)
        • JavaScript (1)
        • Django (4)
      • CS (3)
        • Git (2)
      • PROJECT (2)
        • 에러핸들링 (2)
      • 기타 (2)
  • 반응형
  • devSeongKu
    From The Present
    devSeongKu
  • 전체
    오늘
    어제
  • 링크

    • Github
  • 인기 글

  • 태그

    Algorithm
    SWEA
    알고리즘
    SW Expert Academy
    Python
    Baekjoon
    html
    취업까지달린다
    스프린트프론트엔드8기
    코드잇스프린트
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devSeongKu
4839. [파이썬 S/W 문제해결 기본] 2일차 - 이진탐색
상단으로

티스토리툴바