반응형

프론트엔드 개발자는 가끔 자바스크립트로 문제를 풀어야한다. 하지만, 애처롭게도 c++에는 내장 라이브러리로 존재하는 binary_search, lower_bound, upper_bound가 존재하지 않느다. 따라서, 우리는 이분탐색을 "직접" 만들어야한다. 이분탐색에 대해 알아보자

 

Binary Search

const binarySearch =(arr, target)=>{
    let left = 0;
    let right = arr.length - 1;

    while(left <= right){
        let mid = Math.floor((left+right)/2);

        if(arr[mid] === target){
            return mid;
        }else if(arr[mid] < target){
            left = mid + 1;
        }else{
            right = mid - 1;
        }
    }

    return -1;
}

 

Lower Bound

const lowerBound =(arr, target)=>{
    let left = 0;
    let right = arr.length - 1;

    while(left < right){
        let mid = Math.floor((left+right)/2);

        if(arr[mid] < target){
            left = mid + 1;
        }else{
            right = mid;
        }
    }
    return left;
}
  • lower bound 는 배열에서 타겟값 이상이 처음으로 나타나는 위치를 찾는다.
  • 이분탐색 하다가 target 값 이상인 left 값이 타겟값을 넘는 첫 위치다.

Upper  Bound

const upperBound =(arr, target)=>{
    let left = 0;
    let right = arr.length - 1;

    while(left < right){
        let mid = Math.floor((left+right)/2);

        if(arr[mid] <= target){
            left = mid + 1;
        }else{
            right = mid;
        }
    }
    return left;
}
  • upper bound 는 배열에서 타겟값보다 큰 값이 나타나는 첫 위치를 찾는다.
  • 타겟값을 초과하는 인덱스를 반환한다.

이분탐색 vs lower, upper

  • 이분탐색은 탐색값을 찾는것 이므로 while의 조건이 left<=right다.
  • lower, upper 는 탐색값의 바운더리를 찾는 것 이므로 while의 조건이 left < right다.
반응형

'Language > Javascript' 카테고리의 다른 글

코딩테스트를 위한 PriorityQueue  (1) 2024.10.31
[JS] 프로토타입  (0) 2024.09.29
반응형

필기 전형

필기 전형에는 LG way fit, 코딩테스트를 본다. 

 

LG Way Fit

인적성 검사 결과를 1년이나 가지고 있는줄 몰랐다.. 작년 유플러스 시험볼때 가뜩이나 무참히 망쳤는데.. 이걸 다시 쓰다니 ㅠㅠ 코테를 엄청 잘보지 않는 이상 괜찮을까??

 

이번에 20문제에 20분으로 바뀌었다는데.. SKCT 보다 더 어려웠다는 후기가 들린다. 오히려 좋을지도??

코딩테스트

  1. Set 을 사용한 일반 구현 문제 (실5)
    1. 두가지 정수를 곱한 후 그 값이 곱한 두가지 값이 포함이 되어있는지? 에 대한 문제였다. 그냥 문자열로 바꾸고 set에 모든 경우의 수를 넣은 후 사이즈를 출력했다.
  2. 시뮬레이션 (실2)
    1. 관람차를 타는 문제. 몇 초동안 기구를 타고싶어하는 사람들과 그 사람들이 관람차 다 타고 내려왔을 때 시간을 구하는 문제.
    2. 삼성 시뮬레이션으로 단련된 나의 실력 덕분에 무난히 풀 수 있었다.
  3. DFS + dijkstra (골4)
    1. 노드간 간선을 만들고, 조건을 만족하는 노드를 찾은 후 그 위치에서 처음 위치로 가장 빠르게 돌아오는 최단시간
    2. 조건을 만족하는 노드 찾기 - dfs
    3. 찾은 노드에서 되돌아오기 - dijkstra

후기

전체적인 문제 난이도가 평이했다. 1,2 번 40분 정도 풀었고, 나머지 1시간 20분은 3번 문제에 투자했다. 평소에 다익스트라 알고리즘 자꾸 까먹어서 시험 보기 전날 몇문제 풀었는데 3번 문제가 나와서 너무 반가웠다.. 그래도 알고리즘을 정확히 기억 못해서 몇번 애먹었지만 dfs와 다익스트라를 결합하니 테스트케이스에 통과했다. 스몰케이스도 넣어가면서 정확성을 확인했는데 라지 케이스에서는 어떻게 될지 모르겠다.

 

예상결과 : 3솔

반응형
반응형

2024 하반기 신한카드 ict 개발 인적성검사 + 코딩테스트 후기

거짓말 같이 서류를 합격해버리기

 

인적성검사

프로그래머스 플랫폼을 사용한 인적성 검사 환경이었다. 공지된대로 언어, 수리, 공간지각, 문제해결이었다. 총 60문제 1시간안에 풀어야한다. 비슷한 시험으로는 SKCT가 있다.

 

인적성 준비

우선, 신한카드 인적성에 관한 정보가 부족해 시중에 판매하고 있는 기업별 인적성 모음집을 구매해서 시간을 재며 풀었다. 유형에 관한 준비가 필요하다고 생각했다. 온라인 환경에서 준비해야하다보니 온라인으로 연습해야한다. 프로그래머스에서 메모장은 지원해주니 암산하는 실력을 기를 수 있다면 좋다.

 

인적성 난이도

시험 난이도는 대체적으로 무난했다. 문제해결 과목이 인적성 ‘추리’ 느낌인 줄 알았는데 NCS ‘문제해결’ 스타일이었다. 직급 관리도? 에서 상황을 제시했을 때 올바른 문항을 고르는 문제가 많았다. 공간지각은 주사위 전개도, 블럭쌓았을 때 예상되는 상하좌우 모습, 블럭 두개를 주고 만들 수 있는 블럭 이런 문제가 나왔다. 수리는 그냥 무난한 수리 문제들, 언어도 대체적으로 비슷한 문제들이었다. (기억이 안나서 비슷하다고 둘러댄건 비밀)

결과

 

 

코딩테스트

프로그래머스 플랫폼을 사용한 코딩테스트 환경이었다. 트렌드와는 조금 다르게 서울역 근처에서 오프라인 시험을 봤다. 개인 노트북 지참에 랜 젠더도 가져와야하는 환경에 조금 낯설었지만 쿠팡에서 괜찮은 놈으로 하나 장만했다.

사용 가능한 언어로는 왠만한 언어는 다됐다. 시험 구성은 4문제 (알고리즘 3 + SQL 1) 이었다.

 

시험 난이도

  1. 맵을 사용해 문자열 횟수를 세고 규칙에 따라 제거하는 문제였다. 난이도는 예상 실버 4~5
  2. 이분탐색을 사용한 문제였다. 평소에 이분탐색이 약해 전날 준비 했는데 준비하길 잘한 것 같다. 난이도는 실버 1~2
  3. DFS를 사용한 문제였다. 지금 생각해보면 크기가 150이었던 것같은데 시간초과 날 것 같다. 아마도 DP를 사용해야하는 것 같은데 ㅠㅠ 아멘.. 예상 난이도는 골드 4
  4. union all ,group by, join 전부다 활용된 문제였다. 문제가 맞았는지는 모르겠다. 여튼 고생많이해서 풀긴했는데 맞았으면..

예상 결과 : 3 ~ 3.5 솔

반응형
반응형

나의 스펙

  • 서울 중위권
  • 학점 : 3.9
  • 프로젝트 경험 : 웹 2, 앱 2, 임베디드 1
  • 어학 : 오픽 IH
  • 자격증 : none
  • 인턴 : none,,

 

배경


11기 불합격을 하고 상반기 취업에도 실패했다. 프로젝트 경험이 역시나 부족하다고 느껴 12기에 다시 재도전을 하기로 했다.

 

진행방법


  1. 지원서 및 에세이 작성
  2. SW적성진단
  3. 인터뷰

3가지 순서로 12기 모집을 한다.

 

지원서 및 에세이 작성


일반적인 회사 공고 자기소개서와는 달리 교육을 목적으로 하는 기관에서의 자기소개이기 때문에 내가 왜 싸피를 들어야하는가? 싸피가 왜 필요한가? 에 대한 고민이 필요한 것 같다. 따라서, 에세이에 싸피가 꼭 필요한 이유 등 어필할 수 있는 내용으로 채워야 한다고 생각한다.

 

질문 향후 어떤 SW 개발자로 성장하고 싶은지 SW 관련 경험을 토대로 기술하고, SSAFY에 지원하신 동기에 대해서도 작성 바랍니다.

에세이는

  • 경험의 부재
  • 싸피가 가져오는 이점

위 두 항목을 기준으로 작성했다.

 

SW적성진단


전공자 입장에서 SW적성진단은 코딩테스트를 치룬다. 비전공자들은 GSAT 같은 시험을 봤다고하는데 정확하지는 않다. 코딩테스트는 꾸준히 문제를 풀어보고 대중적인 알고리즘에 대한 기본 문제를 쉽게 풀 수 있다면 무리없이 통과할 수 있다.

플랫폼은 SWEA 에서 보기때문에 SWEA 에서 제공하는 D1~D3 문제들을 풀어가며 준비를 했다. 11기때와는 다르게 맥북으로 시험을 진행했는데 문제가 생겼을 시 도움을 받을 수 없다는 점만 제외한다면 SWEA 환경을 어느정도 적응했을 때 무리없이 진행할 수 있었다.

 

위와 같이 준비한 덕분에 코딩테스트는 무난하게 통과했다.

 

인터뷰


작년 11기 준비에 이어 하나은행 PT 준비 경험을 토대로 혼자서 진행하려고 했는데 혼자서 하면 잘 안할것 같기에 내가 직접 스터디를 파고 인터뷰 준비를 했다.

 

인터뷰 준비기간이 되면 오픈채팅방이 하나 생긴다. 그 오픈채팅방에 들어가면 여러 사람들이 면접스터디를 구한다. 내 집 주위를 기준으로 스터디를 모집했고 전공1(나), 비전공(3) 명으로 구성된 스터디를 만들었다.

 

면접 스터디를 진행하면서 주로 PT 에 대해 많이 준비했던 것 같다. 어떤식으로 면접이 진행될지 몰라 구글링을 통해 IT 뉴스를 읽고 내용에 대해 서술하는 방식으로 진행했다. 그리고 다양한 IT 키워드에 대해 개념을 준비했다.

 

면접 준비는 인성 면접으로 준비했고, 에세이에서 질문할 만한 질문리스트를 만들거나 흔히 알려져있는 인성면접 질문 리스트를 이용했다.

인성 관련

  1. 성격의 장단점
  2. 개발자가 되고 싶은 이유
  3. 어떤 개발자가 되고 싶은지
  4. 본인은 리더인지 팔로워인지
  5. 팀을 위해 희생한 경험
  6. 최종적으로 원하는 직무
  7. 실패나 어려움을 겪고 극복한 사례 / 도전정신이 드러나는 사례
  8. 본인의 경쟁력
  9. 마지막으로 할 말
  10. 개발 동아리 / 관련 프로그램을 하시면서 힘들었던 적이 있다면 말씀해주세요
  11. 책임자로써 팀원간의 불화가 있을 때 어떻게 대처할 것인가요?
  12. 협업을 해본 경험이 있나요?
  13. 최근에 읽은 IT 기사를 소개해주세요
  14. 현재 본인의 전공을 선택한 계기가 무엇인가요?
  15. 취업을 하기에 부족하다고 느끼는 이유가 무엇인가요
  16. 팀플을 진행하면서 어려웠던 점이 있나요?
  17. 추후에 개발자가 되었을 때 어떠한 프로그램을 개발하고 싶으신지?

또, 프로젝트 질문도 나올 것 같아 프로젝트에 대한 질문도 준비해 갔다.

프로젝트 관련

  1. 프로젝트 내 역활
  2. 개발 과정
  3. 사용기술과 선택 이유
  4. 프로젝트 진행 중 겪은 갈등 상황과 해결 방법
  5. (에세이에 작성한) (’’’) 프로젝트가 무엇인가요?
  6. (에세이에 작성한) (’’’) 프로젝트를 진행하면서 본인이 주도한 역할을 위주로 말씀해주세요.
  7. 프로젝트를 진행하며 기술적인 어려움을 겪은 적이 있었나요? 어떻게 해결했나요?
  8. 기재한 프로젝트 동작과정에 대해 말씀해주세요

인터뷰 후기


 

합격!!!

 

예비군가서 2시에서 3시가 가까워질때마다 가슴이 막 두근두근 부들부들 했는데 빠르게 확인해보니!! 좋은 결과를 얻을 수 있게 되었다!! 작년 11기 불합격일때 너무너무 아쉬웠는데 이번에는 합격해 감회가 새롭다.

 

얼른 수업에 열심히 참여해서 좋은 개발자로 거듭나고 싶다.

반응형

+ Recent posts