[SW사관학교 정글]50일차 TIL

김승덕·2022년 11월 7일
0

SW사관학교 정글 5기

목록 보기
90/150
post-thumbnail

웹 프록시

💡 웹 프록시 : 웹 브라우저와 서버 사이의 중개자 역할을 하는 프로그램

웹 페이지 파일을 서버에 직접 요청하지 않고, 브라우저는 프록시와 연결한 수 서버에 요청을 대신 보내도록 시킨다. 서버가 프록시에 응답을 주면 프록시는 브라우저에게 응답을 전달한다.

시퀀셜 웹 프록시 만들기

  • 한번에 하나씩 요청을 처리하는 프록시
  1. GET 요청 처리
  2. 프록시가 실행된 이후 프록시를 커맨드 라인에 명시된 프트로부터 들어오는 요청을 항상 대기해야함
  3. 연결이 맺어지면 프록시는 클라이언트의 요청을 읽고 파싱해야한다.
  4. 클라이언트가 올바른 HTTP 요청을 보냈는지 검증이 필요
    5, 최종적으로 프록시는 서버의 응답을 읽고 클라이언트에게 전달함.

2776 : 암기왕

문제

연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, 연종이 하루 동안 본 정수들을 모두 ‘수첩1’에 적어 놓았다. 그것을 바탕으로 그가 진짜 암기왕인지 알아보기 위해, 동규는 연종에게 M개의 질문을 던졌다. 질문의 내용은 “X라는 정수를 오늘 본 적이 있는가?” 이다. 연종은 막힘없이 모두 대답을 했고, 동규는 연종이 봤다고 주장하는 수 들을 ‘수첩2’에 적어 두었다. 집에 돌아온 동규는 답이 맞는지 확인하려 하지만, 연종을 따라다니느라 너무 힘들어서 여러분에게 도움을 요청했다. 동규를 도와주기 위해 ‘수첩2’에 적혀있는 순서대로, 각각의 수에 대하여, ‘수첩1’에 있으면 1을, 없으면 0을 출력하는 프로그램을 작성해보자.

입력

첫째 줄에 테스트케이스의 개수 T가 들어온다. 다음 줄에는 ‘수첩 1’에 적어 놓은 정수의 개수 N(1 ≤ N ≤ 1,000,000)이 입력으로 들어온다. 그 다음 줄에  ‘수첩 1’에 적혀 있는 정수들이 N개 들어온다. 그 다음 줄에는 ‘수첩 2’에 적어 놓은 정수의 개수 M(1 ≤ M ≤ 1,000,000) 이 주어지고, 다음 줄에 ‘수첩 2’에 적어 놓은 정수들이 입력으로 M개 들어온다. 모든 정수들의 범위는 int 로 한다.

출력

‘수첩2’에 적혀있는 M개의 숫자 순서대로, ‘수첩1’에 있으면 1을, 없으면 0을 출력한다.

예제 입력 1

1
5
4 1 5 2 3
5
1 3 7 9 5

예제 출력 1

1
1
0
0
1

알고리즘 분류

💯 문제 풀이

🔓 문제 접근 과정

이분 탐색을 통해 시간 복잡도를 줄이는게 중요!

🔑 최종 코드

from sys import stdin

# 1
# 5
# 4 1 5 2 3
# 5
# 1 3 7 9 5

# stdin = open('example.txt', 'r')
input = stdin.readline

def binary_search(start, end, nums, num):
    while start <= end:
        mid = (start + end) // 2

        if nums[mid] == num:
            return 1
        elif nums[mid] < num:
            start = mid+1
        else:
            end = mid-1
    return 0

tc = int(input())

for _ in range(tc):
    n = int(input())
    nlist = list(map(int, input().split()))
    nlist.sort()
    m = int(input())
    mlist = list(map(int, input().split()))

    for num in mlist:
        print(binary_search(0, n-1, nlist, num))

🙋‍♂️ 오늘의 하루는...

뭔가 아쉬운 하루이다...
조급해하지 말자.
하나씩 하다보면 다 되어있을것이여 ㅎㅎ

profile
오히려 좋아 😎

0개의 댓글