22.08.17 TIL

옵주비·2022년 8월 17일
0

대전에서 보내는 마지막 밤이다. 내일은 모든 짐을 싸서 올라가는데 느낌이 정말 이상하다. 5개월 동안 살았는데, 이렇게 떠나려니까 마음이 싱숭생숭하다. 그와 별개로 오늘 하루 정말 쉽지 않았다. 아침 일찍부터 일어나 협력사 면접을 준비했고, 도중에 가족 중에 추가 확진자가 있다는 얘기를 듣고 속상한 마음에 울컥했고, 우여곡절 끝에 면접을 봤다 😵‍💫

협력사 면접

마지막 준비

오늘은 인생 첫 기술면접이 있던 날이었다. 면접 경험이 좀 있다보니 긴장하지는 않았는데, 기술면접은 처음인지라 걱정은 있었다. 그래도 어제 TIL에 언급했듯이 채용 사이트에 직무별로 꼭 알아야 하는 질문 가이드라인이 있어서, 어제에 이어 그 부분을 준비했다. 그리고 현재 대전에 남아서 강의실에서 함께 공부하는 반 친구들끼리 면접 준비를 같이 하며 만든 자료가 있는데, 한 친구가 고맙게도 연락을 줘서 공유를 받았다. 나는 지난 3일간 카이스트 본원, 카페, 기숙사에서 공부하느라 강의실에 없었는데... 이 글을 통해 감사 인사를 다시 전한다.

어제 면접을 본 친구들 중에 절반은 질문리스트에서는 거의 안 나오고 처음 듣는 개념이 너무 많았다고 해서 나도 걱정이 많았는데, 나 역시 BE 질문 15가지 중에는 하나도 안 나왔다. 그래도 덕분에 잘 준비할 수 있었다👍

면접 후기

주어진 시간동안 열심히 준비했지만, 첫 기술면접은 탈탈탈 털렸다... 겸손해야겠다는 생각과 부족함을 많이 느끼게 된 면접이었다. 가상 메모리라는 개념에 대해 막연하게 어렵다고 느껴왔는데, 그 주제로만 전체 30분 중에 20분을 얘기하려니... 쉽지 않았다. 당황해서 이후에 남은 10분동안 들어온 추가적인 질문에서도, 아는 내용인데 잘못 대답하기도 하고 🌚

그래도 정말 좋은 경험이었다는 생각이다. 덕분에 몰랐던 내용들도 공부를 많이 했고, 내가 어떤 부분이 부족한지도 깨달을 수 있었기 때문이다. 새로운 지식을 공부하는데 급급했는데, 정글 과정을 빠르게 다시 복습해봐야겠다.

이번 면접 경험을 바탕으로, 다음 면접부터는 잘 볼 수 있을거 같다!

알고리즘

프로그래머스

오늘 풀어본 문제는 타겟 넘버 라는 문제이다. 레벨 2짜리 ! 우울한 기분을 뭘로 달래지... 하다가 제목이 끌려서 들어왔다. 평소 매직넘버, 타겟넘버라는 단어를 좋아해서 😊 문제를 보니까, 단순하게 더하기와 빼기를 붙여가면서 계산하면 되지 않을까? 싶어서 생각나는대로 코드를 구성해보았다.

def solution(numbers, target):
    N = len(numbers) # 주어지는 숫자의 개수
    answer = []      # 타겟 넘버를 만드는 방법을 세기 위한 리스트
    
    # 타겟 넘버를 만들 수 있는 방법을 체크하기 위한 dfs 함수 설정
    # used(사용 횟수), nowSum(현재 결과) 
    def dfs(used, nowSum):
        # 종료조건 설정 - 주어진 숫자의 개수(N)만큼 모두 사용했는가?
        if used == N:
            # 타겟 넘버를 만들었으면, 리스트 원소를 하나 추가
            if nowSum == target: 
                answer.append(1)
            return
        # 아직 N개보다 덜 사용했다면
        dfs(used+1, nowSum + numbers[used]) # 현재 숫자를 더하고 다음 차례로
        dfs(used+1, nowSum - numbers[used]) # 현재 숫자를 빼주고 다음 차례로
        

    dfs(0, 0) # 위에서 만든 dfs 함수의 인자를 최초니까 모두 0으로 초기화화고 호출

    return len(answer) # 방법의 가짓수를 len으로 계산해 반환

여기서 answer를 리스트로 선언해준 이유는, 만약 타겟 넘버를 어떻게 만들었는지의 구성을 확인하려 하는 경우에도 같은 폼을 사용할 수 있기 때문이다. 파이썬의 len 함수 시간복잡도가 O(1)이기에 속도도 괜찮다.

0개의 댓글