[알고리즘] 이진탐색 / 이분탐색 (Binary Search) (Python)

728x90

보통 원하는 원소를 찾고자 할 때 처음부터 끝까지 탐색하는 선형 탐색을 주로 사용한다.

 

선형 탐색은 데이터의 크기가 너무 크지 않다면 딱히 고려할 조건이 없기 때문에 구현이 쉽기 때문이다.

 

하지만 데이터의 크기가 너무 커진다면 얘기가 달라진다.

 

그래서 나온 탐색 방법이 이진 탐색이다.(이분 탐색도 같은 말)

 

먼저 기본적인 개념은 순차적으로 정렬이 된 상태에서 특정 원소를 찾을 때까지 범위를 절반씩 줄이고 더 이상 찾을 범위가 없으면 해당 원소는 없다고 판단하는 알고리즘이다.

 

N개의 Data가 있을 때 범위를 절반씩 줄여나가므로 O(logn)의 아주 효율적인 시간 복잡도를 가지는데 여기서 중요한 점은 정렬된 상태여야 한다는 것이다.

 

왜냐하면 범위를 줄여나갈 때 찾고자 하는 원소와 현재 범위의 중간값을 비교해서 일치하면 중단, 일치하지 않으면 절반에 해당하는 범위엔 찾고자 하는 원소가 없다는 전제하에 범위를 줄여나가는 방식인데 정렬된 상태가 아니라면 이처럼 범위를 줄여나갈 수가 없다.

 

따라서 정렬된 Data를 탐색하거나 정렬하여 탐색할 수 있는 범위가 주어진다.

 

참고로 Python의 sort함수를 쓰면 O(nlogn)의 시간 복잡도를 가지므로 100만의 Input정도는 충분히 정렬 후 탐색할 수 있다.

 

그림의 예시를 따라가다 보면 쉽게 이해할 수 있을 것이다. (예시는 오름차순 리스트를 하며 내림차순은 반대로 하면 된다)

 

data=[1,2,4,5,6,8,9]
data=[1,2,4,5,6,8,9]

 

먼저 리스트의 전체 범위에서 시작해야 하므로 Left와 Right 두 개의 변수가 필요하다.

 

Left는 시작을 뜻하는 0(0번째 인덱스), Right는 끝을 뜻하는 len(data)-1로 선언하면 된다.

 

Left와 Right 변수 선언
Left와 Right 변수 선언

 

이제 아주 간단한 사전 준비는 끝났다.

 

Left와 Right의 위치가 역전된다면 더 이상 탐색할 범위가 없다는 뜻이므로 Left <= Right인 동안 반복을 계속 돌려주면 된다.

 

예시로 2와 7을 찾도록 해보겠다.

 

중앙값 비교
중앙값 비교

 

빨간색 화살표는 중앙값(변수명은 mid)을 뜻하고 찾고자 하는 원소가 mid에 있는 원소보다 작으므로 왼쪽 범위를 찾아야 한다는 뜻이 된다.

 

이때 이미 mid에 위치한 원소는 탐색했으므로 Right는 mid-1로 변경해서 조금이라도 탐색 횟수를 줄여준다.

 

범위 줄인 뒤 중앙값 비교
범위 줄인 뒤 중앙값 비교

 

Right=mid-1로 범위를 바꾼 뒤 다시 중앙값(mid)을 비교해보면 2를 찾을 수 있다.

 

해당 위치의 인덱스를 저장한 뒤 반복문을 빠져나오면 된다.

 

다음은 리스트에 없는 7을 찾아보겠다.

 

중앙값 비교
중앙값 비교

 

찾고자 하는 원소가 중앙값보다 크므로 오른쪽 범위에 있단 의미고 마찬가지로 중앙값은 탐색했으므로 탐색 횟수를 줄이기 위해 Left는 mid+1로 변경한다.

 

범위 줄인 뒤 중앙값 비교
범위 줄인 뒤 중앙값 비교

 

오른쪽 범위로 이동해서 다시 중앙값을 비교해보니 찾고자 하는 원소보다 중앙값이 더 크다.

 

이 말은 왼쪽 범위에 있단 뜻이므로 Right를 mid-1로 변경한다.

 

범위 줄인 뒤 중앙값 비교
범위 줄인 뒤 중앙값 비교

 

다시 왼쪽 범위로 이동해서 중앙값을 비교해보니 찾고자 하는 원소가 중앙값보다 더 크다.

 

이 말은 중앙값보다 오른쪽 범위에 있단 뜻이므로 Left는 mid+1로 변경한다.

 

이때 Left는 Right보다 커져서 역전되므로 결국 원소를 찾지 못한 채 반복문을 빠져나오게 된다.

 

이 알고리즘이 이진 탐색이며 7개의 Data에서 2를 찾는데 2번 연산, 7이 있는지 확인하는데 3번 연산밖에 하지 않았다.

 

만약 선형 탐색이었다면 최악의 경우 7번(Data의 크기만큼)의 연산을 할 것이고 확실히 이진 탐색을 통해 연산 횟수가 줄어든 것을 알 수 있다.

 

지금은 Data의 크기가 작기 때문에 몇 번 차이가 없지만 Data의 크기가 막대하게 커지면 상당히 효율적인 알고리즘이란 사실을 체감할 수 있을 것이다.

 

다음은 위의 설명대로 구현한 전체 코드이다.

 

data=[1,2,4,5,6,8,9]

def binary(n):
    index=-1
    left=0
    right=len(data)-1
    
    print("이진 탐색 과정 :",end=" ")

    while left<=right:
        mid=(left+right)//2
        print(data[mid],end=" ")
        if data[mid]==n:
            index=mid
            break
        elif n<data[mid]:
            right=mid-1
        else:
            left=mid+1
    print()
    return index

first=binary(2)

if first==-1:
    print("없는 원소입니다.")
else:
    print(first,"번째 인덱스에 있습니다.")

second=binary(7)

if second==-1:
    print("없는 원소입니다.")
else:
    print(second,"번째 인덱스에 있습니다.")

 

초기 Index는 -1로 지정하고 찾는 원소가 있다면 해당 원소의 인덱스로 갱신한다.

 

즉 여전히 Index가 -1이라면 찾는 원소가 없단 뜻이다.

 

결과 화면
결과 화면

 

그림을 참고하여 코드를 한 줄씩 따라가다 보면 쉽게 이해할 수 있을 것이다.

 

혹시나 해서 알고리즘 구현 자체를 접한 지 얼마 안 된 사람들께 덧붙이자면 이번 코드에서는 예시를 위해 인덱스를 반환하도록 구현했지만 당연하게도 각자 접하는 문제에 맞게끔 변형하여 구현해야 된다.

 

끝으로 이진탐색을 연습할 수 있는 문제를 몇가지 추천한다.

 

https://www.acmicpc.net/problem/1920

 

1920번: 수 찾기

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들

www.acmicpc.net

 

https://www.acmicpc.net/problem/1654

 

1654번: 랜선 자르기

첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그

www.acmicpc.net

728x90

댓글()

[코딩 테스트] 2021 엔픽셀 NPIXEL 신입공채 코딩 테스트 후기 (불합격)

취업 과정|2021. 12. 1. 19:37
728x90

엔픽셀 공고 이미지
엔픽셀 공고 이미지

 

지난 2021.11.19(금)에 엔픽셀(NPIXEL) 코딩 테스트를 봤다.

 

엔픽셀(NPIXEL)은 모바일 게임 그랑사가를 출시한 회사이며 최단기간 유니콘 기업에 등극한 기업이다.

 

이때 유니콘 기업이란 기업 가치 10억 달러 이상, 창업한 지 10년 이하인 비상장 스타트업을 뜻하며 흔히 아는 크래프톤, 비바리퍼블리카(토스), 야놀자, 위메프, 쏘카, 무신사 등이 유니콘 기업에 속한다.

 

공채 사이트에서 Next Pixels 1기란 문구를 봐선 아무래도 첫 공채인 것 같다.

 

조금 신기했던 게 메일이나 문자 내용에서 이모티콘이 상당히 많은 것으로 보아 단순 업무로 딱딱한 내용을 전송하는 게 아니라 지원자들에게 친근하게 다가가고 싶어 하는 것처럼 느껴졌다.

 

또한 코테가 끝나면 1만원 상당의 스타벅스 기프티콘도 보내주더라.(프로그래밍 직군은 코테고 다른 직군은 과제 전형 끝나면 주는 듯??)

 

각설하고 프로그래밍 직군은 과제 전형 기간에 포트폴리오로 제출 가능한 Github 주소나 링크가 있으면 제출 가능했다.

 

이때 링크는 메모장에 작성해서 Zip 파일로 압축하여 올리는 거라 난 Github 주소와 포트폴리오 사이트 주소를 같이 제출했다.

 

그리고 코테는 다소 특이한 방식으로 진행됐다.

 

11.19(금) 오전 10시 ~ 11.21(일) 오후 10시 *총 3일간 아무 때나 편할 때 접속해서 응시하면 되고 총 4문제, 3시간 동안 보면 됐다.

 

이렇게 특정 기간 동안 자유롭게 코테를 볼 수 있는 것은 삼성 SDS에서 주관한 2021 하계 대학생 알고리즘 특강을 위한 코테를 제외하곤 처음이다.

 

플랫폼은 프로그래머스에서 진행됐고 1~2번은 반드시 C++로만, 3~4번은 C++ 또는 Python을 선택해서 풀 수 있었다.

 

문제별로 언어가 제한되는 것도 특이한 경험이긴 했다.

 

게임회사다 보니까 언어를 C++과 Python으로만 제한해서 보는 것 같은데 다행히 난 C를 할 줄 알아서 비교적 어렵진 않게 C++문법을 한 번 훑고 필요할만한 라이브러리도 정리하고 첫날 바로 코테를 봤다.

 

젤 중요한 코테의 난이도는 여러 알고리즘을 접해봤다면 어렵진 않게 풀 수 있는 수준이다.

 

알고리즘을 분류하자면 구현, 그래프, DP 정도가 나왔는데 어렵게 꼬아놓은 형식이 아니라 해당 알고리즘들을 접해봤다면 시간도 넉넉해서 충분히 풀 수 있는 문제였다.

 

하지만 난 결국 한 문제를 풀지 못했다.....ㅠㅠ

DP문제였는데 점화식을 세우는 과정에서 머리가 안 돌아가더라.....

어차피 공채가 있길래 넣어본 거라 머리가 안 돌아가서 그냥 3문제 푼 거에 만족하고 껐다.

 

근데 쉬었다가 한 번 다시 세워보니 금방 나왔다.

 

결과


결과가 나왔는데 불합격 메일이 왔다. (2021.12.02)

 

결과 메일
결과 메일

 

공채 단톡방을 확인해보니 3문제 풀고 합격한 사람도 있고 4문제 풀고 떨어진 사람도 있다고 한다.

 

여태 경험한 코테들은 상위 점수별로 합격을 시키고 동점자가 많은 커트라인은 자소서를 기반으로 합, 불을 정했는데 이번 코테는 어떤 기준인지 감이 잡히지 않았다.

 

여러 가지 가능성을 추측해보자면

 

  1. 시간 복잡도의 제한으로 인해 효율적인 알고리즘만 통과했다.
  2. 기존 테스트 케이스로 조건을 거르지 못하는 예상치 못한 히든 테스트 케이스가 존재했다.
  3. 제출한 포트폴리오가 영향을 끼친다.
  4. 결과뿐만 아니라 작성한 코드에도 평가요소가 있다.

이 정도가 떠오른다.

 

1. 분명 Input과 알고리즘의 시간 복잡도를 계산하면서 구현했지만 아무래도 사람인지라 충분히 실수할 가능성은 있다.

 

2. 히든 테케도 같은 원리이다.

 

3. Github주소와 포트폴리오 사이트를 제출했고 해당 사항은 선택이었지만 점수에 들어갈 가능성을 배제할 순 없다.

 

4. 이는 라인(Line)에서 진행한 코테 방식인데 평가요소에 들어간다고 명시해야 합리적인 방식이다. 따라서 이 부분은 비교적 가능성이 낮아 보인다.

 

어찌 됐든 내 실력이 부족하여 탈락한 것이므로 어디서든 합격할 수 있게 철저히 준비해야겠다.

728x90

댓글()

[SSAFY] 싸피 7기 SW 적성 진단 후기(합격)

취업 과정|2021. 12. 1. 14:39
728x90

지난 2021.11.13에 SW 적성 진단을 보고
오늘 (2021.11.29) 결과가 나왔다.

 

적성 진단 결과
적성 진단 결과


지난 4기, 6기에도 지원해본 경험으로 보면 이번 7기 SW 적성 진단은 비교적 쉬운 편이었다.

SW 적성 진단은 수리/추리 문제, Computational Thinking(CT) 이렇게 두 가지로 나눠진다.

수리/추리 문제는 15문항, CT는 큰 문제는 5문항, 각 문제는 5문항씩 점점 Input이 증가하는 형태이다.

4기, 6기 때는 CT가 30분이었으며 수리/추리 문제를 약 75% 정도 풀었고 CT는 40% 정도 풀었었는데 둘 다 적성 진단은 합격했었다.

CT를 40% 정도 푼 것도 어려워서가 아니라 시간이 부족해서였다.

하지만 이번에는 CT가 10분이 늘어났고 난이도 자체도 엄청 쉬워져서 수리/추리 문제는 75% 정도, CT는 100% 풀었고 합격할 것이란 예상은 틀리지 않았다.

과거 Interview 경험을 기반으로 이번엔 부족한 부분을 싸피를 통해 배워야겠다는 의지를 어필해야겠다.

분명 Interview에서 면접관님께 "아시는 것도 많은 것 같네요"란 말을 들었지만 불합격한건, 싸피 자체가 취업시장 활성화를 위한 능력있는 개발자 배출을 목표로 하기에 보다 더 배움이 필요한 지원자가 적합하기 때문에 떨어진 것 같다.

SW 적성 진단 합격 팁은 수리/추리 문제는 NCS의 자료 해석과 방정식을 세우는 수학 문제를 여러 번 풀어보고 논리적으로 추리 문제를 해결하는 연습을 하면 될 것이다.

또한 전공자라면 CT가 시간과의 싸움일 뿐 문제 자체가 어렵진 않겠지만 비전공자라면 알고리즘을 공부하고 백준이나 프로그래머스에서 간단한 알고리즘 문제를 접하면 쉽게 풀 수 있을 것이라 생각한다.

알고리즘 문제 자체가 컴퓨팅 사고이기 때문이다.

백준과 프로그래머스는 알고리즘을 코드로 구현하는 연습을 하는 사이트이고 IT기업 입사를 위해 가장 기본적으로 보는 코딩 테스트 합격을 위해 필수인 사이트이다.

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net


https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr


백준에 Solved.ac란 기능이 있는데 이를 기준으로 골드 티어, 프로그래머스는 3단계 정도 실력이 되면 대부분의 기업 코딩 테스트는 합격할 수준이 될 것이다.

현재 작성자는 골드 2 수준으로 네이버, 라인과 같은 IT기업 코테에 합격한 경험이 있다.

728x90

댓글()

[BOJ] Python 백준 1072번 게임 실버 3

728x90

https://www.acmicpc.net/problem/1072

 

1072번: 게임

김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시

www.acmicpc.net


전형적으로 이진 탐색을 사용하는 문제이다.

혹시 이진 탐색을 처음 접하거나 익숙하지 않다면 관련 포스팅을 보고 이해한 뒤 문제를 푸는게 좋을 것 같다.

 

2021.12.02 - [알고리즘/알고리즘 강의] - (알고리즘) 이진탐색 / 이분탐색 (Binary Search)

 

(알고리즘) 이진탐색 / 이분탐색 (Binary Search)

보통 원하는 원소를 찾고자 할 때 처음부터 끝까지 탐색하는 선형 탐색을 주로 사용한다. 선형 탐색은 데이터의 크기가 너무 크지 않다면 딱히 고려할 조건이 없기 때문에 구현이 쉽기 때문이다

khsung0.tistory.com

 

문제 풀이


문제에서 전체 게임 횟수 : X, 이긴 게임 횟수 : Y, 승률 : Z이다.

주의해야 할 조건은 3가지다.

 

  1. 승률을 뜻하는 Z는 소수점을 버린다.(반올림이 아니다)
  2. Z가 절대 변하지 않으면 -1을 출력한다.
  3. X는 최대 1,000,000,000 (10억)까지 가능하다.

Z에 대한 식을 나타내 보면 Z=(Y*100)/X이고 a만큼 수행했을 때 Z+1=((Y+a)*100)/(X+a)가 성립하는 최소 a를 구하는 문제이다. (승률 = 이긴 횟수/전체 횟수)

참고로 Python의 계산 방식 때문인지 처음에 Z=(Y//X)*100로 작성했더니 틀렸었다.

꼭 Z=(Y*100)//X로 작성해야하고 이 부분에 대해서 정확히 아시는 분이 계시다면 피드백 해주시면 감사합니다!!

이때 Z가 99 이상이라면 승률은 절대 변하지 않으므로 -1을 출력하고 98일 때 생각하면 X번만큼 추가할 때 99로 변하기 때문에 최대 X번까지만 반복하면 된다는 것을 알 수 있다.

이때 X는 최대 10억까지 가능하므로 순차적으로 탐색하는 O(n)의 시간 복잡도를 적용한다면 반드시 시간 초과가 날 수밖에 없다.

즉 1부터 X까지 오름차순인 상태에서 탐색 가능한 이분 탐색(이진 탐색)을 적용하면 풀 수 있을 것이다.

다음은 전체 코드다.

 

x,y=map(int,input().split()) 
z=(100*y)//x 
left=0 
right=x 
res=x 
if z>=99: 
    print(-1)
else: 
    while left<=right: 
        mid=(left+right)//2 
        if (100*(y+mid))//(x+mid)>z: 
            res=mid 
            right=mid-1 
        else: 
            left=mid+1
    print(res)


res는 정답인 최소 게임 수를 의미하는 변수로 최대 X번을 저장해놓고 더 작은 수가 있으면 갱신하는 방식으로 구현하였다.

승률이 99 이상이면 바로 -1을 출력하고 98 이하라면 이진 탐색을 실행한다.

초기 left는 0, right는 X로 설정하고 left와 right가 역전되지 않을 때까지 반복한다.

이때 left와 right 중간값을 기준으로 승률(Z)이 변하면 res를 갱신한 뒤 right는 중간값-1로, 변하지 않으면 left를 중간값+1로 변경함으로써 탐색해야 되는 범위를 절반씩 줄여준다.

즉 탐색 범위가 N이라면 범위를 절반씩 줄이므로 O(logn)의 시간 복잡도를 갖고, 10억의 Input이 들어와도 충분히 연산 가능해진다.

 

결과 화면
결과 화면


※조건을 잘 보고 Input의 크기에 따라 적절한 알고리즘을 적용하는 것이 중요한 것 같다.

728x90

댓글()

[실기 시험] 2021년 하반기 IBK 기업은행 신입행원 채용 실기시험 후기 (불합격)

취업 과정|2021. 11. 30. 00:24
728x90

2021.11.30 - [취업 과정] - (필기시험) 2021년 하반기 IBK 기업은행 신입행원 채용 필기시험 후기(합격)

 

(필기 시험) 2021년 하반기 IBK 기업은행 신입행원 채용 필기시험 후기(합격)

지난 2021.10.26에 IBK 필기시험을 보러 갔다. 이미 새마을금고 중앙회의 필기시험에서 NCS의 어려움을 느껴 시중의 기출문제 복원 집을 사서 NCS 준비를 했고 직무 수행 부분은 전공이긴 한데 뭘 어

khsung0.tistory.com

 

연수원 이동


지난 필기시험 이후 AI 역량 검사도 실시했고 2021.11.11에 실기 시험을 보러 을지로에 있는 IBK 본점으로 갔다.

 

5분 정도 일찍 가서 발열 체크와 문진표 작성을 한 뒤 본점 뒤편 주차장에 7시 50분까지 탑승해야 되기에 아침 일찍부터 준비해서 출발했지만 뭔가 기대되는 마음 때문인지 싱숭생숭해서 그런지 전혀 피곤하지 않고 흥미롭게 움직였다.

 

챙겨야 할 준비물은 반명함 사진, 신분증, 마스크, 필기구였다.

 

약 50분 ~ 1시간 정도 버스를 타고 가면 도착하는 곳은 용인에 있는 IBK기업은행 기흥 연수원이다.

 

 

 

 

기흥 연수원
기흥 연수원 전경

 

코딩 테스트(오전)


코로나로 인해 원래 1박 2일에서 당일치기로 진행하는데 오전에는 코딩 테스트, 오후에는 토론 면접과 심층면접을 본다.

 

도착하자마자 시작하는 게 아니라 약 한 시간 정도 OT를 진행하면서 지원자들의 긴장을 풀어주고 10시부터 110분간 알고리즘 3문제 + SQL 1문제를 풀었다.

 

보면서 느낀 점은 두 번째 금융권 코테라 비교할 근거가 부족하지만 그럼에도 상당히 쉽다였다.

특히 다른 IT기업 코테에 비교하면 나오지도 않을 수준의 난이도인 문제도 있었다.

 

한 문제가 비교적 아이디어를 떠올리기 힘든 문제긴 했지만 Test Case를 여러 개 따라 하다 보면 충분히 구현 가능한 문제였고 다른 알고리즘 문제도 단순 구현, SQL은 GROUP BY를 사용하는 정도라 상당히 쉬웠다.

(코테 때 옆에서 볼 수 없도록 모니터 보안 필름이 장착되어 있는데 진짜 효과 좋더라....)

 

조금 피곤해서 다 풀고 50분 정도 잤는데 끝까지 타자 소리가 들리고 어려웠단 몇몇 지원자가 있는 거로 봐선 IT 기업 코테를 준비하는 지원자는 금융권 코테는 걱정하지 않아도 되겠단 생각을 했다.

 

코테가 끝나면 직원 한 분과 같은 조원끼리 점심을 먹는데 그 직원이 곧 면접관님이시다!!

 

점심은 맛있는 메뉴였지만 목으로 넘어가는지 코로 넘어가는지 먹는 둥 마는 둥 했다 ㅋㅋㅋㅋ................

 

토론 면접(오후)


점심을 먹고 나선 코테 봤던 곳에서 대기하면서 토론 면접, 심층 면접을 순차적으로 진행한다.

(물론 면접 보는 방은 따로 있다.)

 

토론 면접은 특정 주제를 던져주고 팀원끼리 찬반을 나눠 토론하는 과정을 평가하는 면접이다.

 

면접관님께서는 전혀 관여를 안 하시고 그냥 팀원끼리 토론을 진행하면 되는데 토론 면접 자체가 처음이고 주제도 익숙하지 않은 주제가 나와서 많이 당황했었다.....

 

또한 평가 요소를 정확히 모르겠어서 그냥 생각나는 대로 아무 말 대잔치를 하다가 나온 것 같다.

 

연습을 한다면 어떠한 주제가 주어지더라도 근거를 갖고 자신의 생각을 논리적으로 펼치는 연습을 해야 고득점이 가능하지 않을까 생각한다.

 

심층 면접(오후)


토론 면접이 끝나면 마찬가지로 대기하다가 심층 면접을 본다.

 

대기할 때 차후 합격하면 최종 면접에서 사용될 신상명세서? 를 작성하며 심층 면접은 다른 기업의 역량 면접과 동일하여 자소서를 기반으로 질문이 들어온다.

 

긴장은 하지 않았지만 면접관님께서도 긴장을 풀어주려 해 주셨고 그 덕에 더욱더 마음 편하게 말을 할 수 있었던 것 같다.

 

토론 면접은 비록 못한 것 같지만 나름 자소서 기반의 심층 면접에서는 내가 경험한 것과 느낀 점, 개선 방안 등을 논리적으로 잘 설명한 것 같아서 괜찮게 봤다는 생각이 들었다.

 

면접관님 반응도 꽤 괜찮은 것 같아서 상당히 많은 지원자가 떨어지지만 기대해봐도 되겠단 느낌을 받았다.

 

후기


모든 일정이 끝나면 5시쯤 되는데 버스를 타는 길을 직원분들이 도열해주시고 끝없는 박수갈채가 이어진다.....

 

부담스럽기도 하고 몸 둘 바를 몰라서 나도 계속 인사하며 나왔다.

 

전체적으로 IBK에서 진행한 일정과 과정은 지원자를 많이 생각한다는 느낌을 받았다.

 

언제 어디서든 끝없이 친절하게 반응해주시고 지나가다 말도 계속 걸어주셨으며 코테 난이도는 어땠는지 피드백을 적극적으로 수용하려는 의지를 엿볼 수 있었다.

 

또한 면접도 최대한 편한 분위기를 이끌어내려 노력해주셔서 감사했다.

 

사실 IT 대기업을 준비하다 단순히 괜찮아 보여서 지원한 거였는데 시험 과정을 통해 IBK에 입행하고 싶단 생각이 들 정도였다.

 

결과


기대해볼 만하다고 생각했지만 결과는 아쉽게도 탈락이었다.

 

결과
결과 화면

 

만약 합격하게 된다면 2년 정도 영업점 근무를 해야 해서 금융권 디지털 직무 자체를 크게 원하진 않았지만 그래도 면접 과정으로 인한 호감도 상승, Name Value, 연봉 등을 고려해봤을 때 많이 아쉽긴 했다.

 

좀 더 좋은 프로젝트로 역량을 보완하고 반드시 채용하고 싶은 인재가 되도록 노력해야겠다.

728x90

댓글()

[필기 시험] 2021년 하반기 IBK 기업은행 신입행원 채용 필기시험 후기(합격)

취업 과정|2021. 11. 30. 00:24
728x90

지난 2021.10.26에 IBK 필기시험을 보러 갔다.

 

이미 새마을금고 중앙회의 필기시험에서 NCS의 어려움을 느껴 시중의 기출문제 복원 집을 사서 NCS 준비를 했고 직무 수행 부분은 전공이긴 한데 뭘 어떻게 준비해야 될지 몰라서 그냥 정보처리기사만 한 번 훑고 갔었다. (자격증은 취득한 상태)

 

참고로 자격증 우대가 가능하기에 취득한 사람들은 조금 더 유리한 것 같다.

 

난 SQLP 까진 취득하기 어려울 것 같아서 SQLD를 땄고 SQLD는 공통 우대로 필기에서 5%의 가산점을 준다.

 

개발자라면 기본적으로 DB 연동은 할 줄 알아야 할 것 같고 비교적 쉬우며 코딩 테스트에서도 은근 SQL 1문제씩 보는 기업들도 꽤 있어서 DB 관련된 자격증 하나 정돈 취득하는 것을 추천한다.

 

https://www.dataq.or.kr/www/main.do

 

데이터자격시험

카드결제/계좌이체 환불 환불 요청시 즉시환불

www.dataq.or.kr

 

시간은 2시간, 디지털 직무는 80문항으로 NCS 직업기초(객관식 20), 직무수행(객관식 40, 주관식 20)이며 객관식은 1점씩, 주관식은 2점씩 총점 100점으로 계산한다.

 

NCS는 비교적 수월하게 풀었는데 직무수행을 보니 상당히 어렵단 느낌을 받았다.

 

확실히 전공자만 뽑겠다는 느낌을 받았는데 그 전공자도 학부 강의를 열심히 들어야 풀 수 있는 문제가 꽤 있었다.

 

AVL 트리, 2-3 트리, 크루스칼 알고리즘, Vpn, Raid 등 전반적으로 깊고 다양하게 공부해야 풀 만한 문제들이 많았다.

 

그나마 다행인 건 자료구조와 알고리즘 책을 작성하면서 체계적으로 공부했고 균형 트리에 대한 이론을 얼핏 기억하고 있어서 어느 정돈 감에 의지해 풀 수 있었다.

 

하지만 나는 학부 강의를 들은 지 좀 시간이 지났고 그다지 열심히 들은 것도 아니라서 어디서 본 것 같은데... 란 생각이 많이 들었기에 IBK 필기시험도 탈락하겠구나 란 느낌을 받았다.

 

그러다 시험이 끝나고 공채 단톡방에서 전산직 공무원 7급 수준으로 어려웠단 평이 많았고 복기를 하는 과정에서 주관식이 점차 맞아 들어가자 아직 포기하기엔 이른 것 같단 생각이 들었다.

 

결국 5%의 가점을 포함하여 68점으로 합격했고 단톡을 통해 유추한 결과 합격 컷은 63점인 것 같았다.

 

만약 가점이 없었다면 딱 합격 컷으로 간당간당했기에 자격증 취득은 선택이 아닌 필수인 것 같다.

 

코딩 테스트는 자신 있기에 면접만 잘 준비하면 될 것 같다.

 

ps. 필기 시험 이후 이디야 세트 기프티콘을 준다.

728x90

댓글()

[필기 테스트] NHN 그룹사 신입 개발자 공개채용 Pre-Test 2차 후기(불합격)

취업 과정|2021. 11. 29. 22:15
728x90

2021.11.29 - [취업 과정] - (코딩 테스트) NHN 그룹사 신입 개발자 공개채용 Pre-Test 1차 후기(합격)

 

(코딩 테스트) NHN 그룹사 신입 개발자 공개채용 Pre-Test 1차 후기(합격)

NHN은 오로지 실력으로만 뽑겠다는 강한 의지를 확인할 수 있었다. 지원을 할 때 자소서도 쓰지 않고 단순히 개인을 식별할 수 있는 정보, 선호 계열사 정보만으로 지원이 가능했었다. 듣기론 2차

khsung0.tistory.com

 

지난 코딩 테스트를 합격하고 2021.11.13 필기 테스트(Pre-Test 2차)를 봤다.

 

문제는 대학교 전공과목들인 자료구조&알고리즘, 프로그래밍 언어, 운영체제, 네트워크, 데이터베이스로 구성되었고 코테 때와는 다르게 본인 식별이 가능한 웹캠을 사용하여 통제된 환경에서 시험을 쳤다.

 

결과부터 말하자면 준비가 부족했다.

 

코딩 테스트 수준도 쉬웠고 홈페이지에서 확인 가능한 필기 기출문제들을 봤을 때 상당히 쉬운 편이어서 별 다른 준비 없이 이론 부분만 대충 훑고 들어갔었는데 생각보다 깊은 수준으로 나왔다.

 

1시간 동안 18문제를 풀기에 비교적 시간은 넉넉했지만 자료구조를 활용하여 시간 복잡도를 계산하기도 하고 이론으로만 접했던 운영체제를 코드화 시켜 어떤 분야에 적합한지 응용하여 생각하는 문제도 나와서 깊게 알고 고민을 해봤는지 물어보는 것 같았다.

 

또한 상세한 계산을 하는 부분도 나와서 학부 때 강의를 열심히 들을걸... 하는 후회도 남았다.

 

2021.11.23에 온 결과 메일을 확인해 보니 역시 탈락했다.

 

2차 결과
2차 결과

 

워낙 코딩 테스트에 자신이 있는 편이었고 IBK 필기시험도 합격하다 보니 자만심이 들었던 것 같다.

 

다시 코테를 처음 준비할 때처럼 초심을 되찾아 이론 공부를 해야겠다.

728x90

댓글()

[코딩 테스트] NHN 그룹사 신입 개발자 공개채용 Pre-Test 1차 후기(합격)

취업 과정|2021. 11. 29. 21:47
728x90

서류 결과
서류 결과

 

NHN은 오로지 실력으로만 뽑겠다는 강한 의지를 확인할 수 있었다.

 

지원을 할 때 자소서도 쓰지 않고 단순히 개인을 식별할 수 있는 정보, 선호 계열사 정보만으로 지원이 가능했었다.

 

듣기론 2차 면접 직전에 자소서를 받아서 면접 보는 방식이기 때문에 다른 IT 대기업도 간단한 자소서를 작성하고 적부 판단만 한 뒤 코테 응시를 하는 프로세스와 차별화를 둔 것 같았다.

 

다만 문제가 난 Python을 주 언어로 사용하지만 응시 가능 언어가 C/C++, Java로 제한되었기에 그나마 익숙한 C로 구현을 연습했고 필요할만한 모듈은 미리 C++ 라이브러리를 확인한 상태에서 응시하였다.

 

2021.10.23 2시간 동안 코테를 봤는데 금융권 코테를 제외하면 가장 쉬운 난이도란 생각이 들었다.

 

총 3문제로 1문제는 우선순위 큐가 필요한 것 같아서 C++로 풀었고 나머지는 C로 충분히 구현할 수 있는 문제였다.

 

단순 구현 문제들이었으며 마지막 문제는 백트래킹으로 풀면 되는 문제였다.

 

N과 M 문제가 가장 비슷한 문제인 것 같다.

 

https://www.acmicpc.net/problem/15649

 

15649번: N과 M (1)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

체감상 백준 티어 기준 브~실 수준인 것 같았다.

 

공채 단톡방에서도 3문제를 풀었단 의견이 다수였고 상반기의 코테 문제도 얼핏 보니 NHN의 코테는 가벼운 수준의 프로그래밍 실력을 묻는 것이라 생각한다.

 

2021.11.04 1차 합격 메일과 함께 Pre-Test 2차 전형 안내가 왔다.

 

코테 결과
코테 결과

 

유튜브 등을 통해 알아본 결과 2차는 학부 시험 수준이라 하니까 강의 자료를 훑어보는 식으로 공부해야겠다.

 

728x90

댓글()