본문 바로가기
Python

기업 코딩 테스트 후기 (Bioinformatics 포지션)

by 코딩하는 미토콘드리아 bioinformatics 2024. 4. 8.
반응형

 

코딩 테스트 안내메일

 

문제 1

목표 : 주어진 문자열 리스트 strs 에서 가장 짧은 문자열을 선택하고, 이를 기준으로 공통된 접두사를 찾는다.

##1
def solution(strs):
    if not strs:
        return ""

    # 가장 짧은 문자열을 찾기. 공통 접두사의 길이는 이 가장 짧은 문자열의 길이
    shortest_str = min(strs, key=len)

    # 가장 짧은 문자열의 각 문자를 반복하면서 다른 문자열들과 비교
    for i, char in enumerate(shortest_str):
        for other in strs:
            # 만약 일치하지 않는 문자가 나타나면, 현재까지 일치했던 부분만 반환
            if other[i] != char:
                return shortest_str[:i]

    # 모든 문자열이 가장 짧은 문자열을 접두사로 갖고 있으면, 이를 반환
    return shortest_str

 

문제 2

주어진 배열 arr 에서 두개의 숫자를 선택해서 그 합이 n 이 되는 경우가 있는지 확인한다. 

##2
def solution(arr, n):
    num_set = set(arr)

    # 배열의 각 숫자에 대해 반복
    for number in arr:

        # n에다가 현재의 값을 빼면 나머지 값
        complement = n - number

        # 그 나머지 값이 리스트에 있는지 확인 
        if complement in num_set and complement != number:
            return True

    return False

 

문제 3

이진 문자열 s 에서 0 과 1이 교차하는 경우를 제거하고 남은 문자열의 길이를 반환 한다.

##3
def solution(s):
    # 빈 스택 활용
    stack = []
    # 이중 문자열 s 의 각 문자 char 에 대해 반복문
    for char in s:

        # 01, 10 패턴 팝 
        # 현재 문자 char 가 스택의 맨 위의 요소와 반대되는 경우 01,10 교차로 나타날때 스택 맨위의 요소 pop
        if stack and ((char == '0' and stack[-1] == '1') or (char == '1' and stack[-1] == '0')):
            stack.pop()
        else:
        # 그렇지 않은 경우 현재 문자 char를 스택에 추가 append
            stack.append(char)
    
    # 끝나면 스택의 길이 반환
    return len(stack)

 

코딩 테스트 결과

 

반응형