본문 바로가기

IT To do and To was

22년 12월 6일_고민이다. , 부품찾기, 알고리즘

728x90
반응형

화요일[괜찮아 괜찮아]

 

1. 이것이

2. 알고리즘

 

1>

이진 탐색 트리를 조금 더 보자면, 

왼쪽 자식 노드 < 부모 노드 < 오른쪽 자식 노드가 성립

 

이진 탐색문제는 입력 데이터가 많거나, 탐색 범위가 넓은 편이다. 그래서 더더욱 빠르게 수행할 방법을 갈구해야한다.

sys라이브러리의 한 줄씩 입력을 맏는다

예시  )

import sys
input_data = sys.stdin.readline().rstrip()

# 입력받은 문자열 그대로 출력
print(input_data)

rstrip()함수는 readline()으로 입력하면 엔터가 줄 바꿈 기호로 입력되는데, 이 공백 문자를 제거하려면 rstrip()함수를 사용해야한다. 

 

부품찾기

문제 설명: 정수 N이 주어지며 N개의 정수가 주어지고 M이 주어지며 M개의 정수가 주어진다.

해당 N개의 정수와 M개의 정수를 비교하여 No, Yes를 출력

 

import sys

a= input()
b = sys.stdin.readline().strip()
b = list(b)
c = int(input())
d = sys.stdin.readline().strip()
d = list(d)
for i in range(c):
    if d[i] in b:
        print("Yes")
    else:
        print("No")

답안:

def binary_search(array, target, start, end):
	while start <= end:
    	mid = (start + end) //2
        # 찾은 경우 중간점 인덱스 반환
        if array[mid] == target:
        	return mid
        # 중간점의 값보다 찾고자 하는 값이 작은 경우 왼쪽 확인
        elif array[mid] > target:
        	end = mid -1
        # 중간점의 값보다 찾고자 하는 값이 큰 경우 오른쪽 확인
        else:	
        	start = mid + 1
        retrun None
n = int(input())
array = list(map(int, input().split()))
array.sort() #이진탐색을 수행하기 위해 사전에 정렬 수행
# M(손님이 확인 요청한 부품 개수) 입력
m = int(input())
# 손님이 확인 요청한 전체 부품 번호를 공백으로 구분하여 입력
x = list(map(int, input().split()))

# 손님이 확인 요청한 부품 번호를 하나씩 확인
for i in x:
	result = binary_search(array, i, 0, n -1)
    if result != None:
    	print("yes")
    else:
    	print("no")

 

2>

정수의 합

def solution(a, b):
    answer = 0
    if a <= b :
        for i in range(a,b+1):
            answer += i
    else :
        for i in range(b, a+1):
            answer += i
    return answer

다른사람이 한 풀이

def adder(a, b):
    # 함수를 완성하세요
    if a > b: a, b = b, a

    return sum(range(a,b+1))

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( adder(3, 5))

 

콜라츠 추측

def solution(num):
    if num == 1:
        return 0
    answer = -1
    a= 500
    while a > 0 :
        if num == 1:
            return 500-a
        if num % 2 == 0:
            num = num/2
            a-=1
        else:
            num = num*3 +1
            a-=1


    return answer

 

피자 나눠먹기(2)

def solution(n):
    for i in range(1,101):
        if (i*6) % n == 0:
            return i

다른사람이 한 풀이

def solution(n):
    answer = 1
    while answer * 6 % n != 0:
        answer += 1
    return answer

회사 면접으로 인해 많은 양을 수행하지 못함..ㅜ

 

그리고 도서관이 너무 추워서 집에 올 수 밖에없었다..ㅜㅜ

 

발이시려워 꽁

손이시려워 꽁

 

// yesterday wished to today list.

. 이것이_✔️

. 알고리즘_✔️

. SQL

. 암기고래

 

tomorrow wish list

. 이것이

. 알고리즘

. SQL

. 암기고래

728x90
반응형