회고

24.01.24 코테

땅호720 2024. 1. 25. 19:31

colab에서 봤다.

면접보다가 중간에 본 거여서 15분씩이었던 것 같은데...기억안남

여튼 기능같은 거는 검색해도 된다고 하셨는데, 예시 코드가 나올 것만 같아서... 검색은 아예 안했다

그리고 힌트도주셨고ㅎ

 

문제 1)
특정 아이디 문자열 A와 B가 있을 때, 다음 코드를 작성 하십시오. '유사도'의 기준을 정의하고, 두 문자열 간의 유사도룰 구하는 코드를 구현 하시오. 비교 아이디 문자열을 원본 아이디 문자열과 가장 유사한 순서대로 정렬 하시오.
유사도 알고리즘 예시: Jaccard Distance J(A, B) = count(교집합) / count(합집합)
예시) 원본 아이디 문자열: "abcd1234" 비교 아이디 문자열 리스트: ["abcd", "ab1234", "abxz0011", "1234abcd", "ABCD1234", "abcd1234abcd1234"]

 

 

내가 set을 사용하는 것 보고, and 연산으로 가능하다고 하셨는데

나는 그게 조건문이라는 것만 생각해서 any(), all(), ...로 밖에 생각이 나지 않았다.

그래서, 면접 마지막에 질문을 드렸고, 이런 식으로 풀 수 있다고 설명해주셨다

굉장히 친절하신분......!!!

# 유사도 계산 함수
def jaccard(a_string, b_string):
    a_set = set(a_string)
    b_set = set(b_string)
    
    inter = a_set & b_set	# 교집합 수
    union = a_set | b_set	# 합집합 수

    return len(inter) / len(union)

 

 

 

 

문제 2) 피보나치수열 1235811

 

뭔가 더 좋은 방법이 있을 것 같아서 찾아보니, 일반적으로 이렇게 작성된다고 한다

def fib(n):
    a,b = 1,1
    if n==1 or n==2:
        return 1
        
    for i in range(1,n):
        a,b = b, a+b

    return a

 

 

 

[참고] 피보나치(Fibonacci) 수열을 구현하는 7가지 방법 - 파이썬(Python) 피보나치 구현 7선