본문 바로가기

반응형

취업준비

(15)
우아한 테크 -OSI 7계층- [2021] 들어가며... 우아한 테코톡에 총 2개의 OSI 7계층 동영상이 있다. - 10분 테코톡이지만 꼼꼼하게 설명해주셔서 42분까지 강의가 된 히히님의 OSI 7계층. https://www.youtube.com/watch?v=1pfTxp25MA8&t=3s - 그리고 파즈의 OSI 7계층. https://www.youtube.com/watch?v=Fl_PSiIwtEo 10분 테코톡은 우아한테크코스 과정을 진행하며 수강생들이 동료들과 학습한 내용을 공유하는 시간이라고 한다. [ 코로나로 인해서 현재는 온라인으로 우아한테크코스 과정을 진행한다고 한다. ] 아직 히히님의 OSI 7계층 동영상은 보지 못했다. 파즈님의 발표를 들어보았고 그에 대한 요약글을 남겨보고자 한다. OSI 7계층은 인터뷰 면접의 단골 문제이니 ..
프로그래머스 사이트 문제 정리하기. [20210928시작][최신 갱신: 20210930] 코딩 테스트를 통과하기 위한 역량을 길러준 문제들 정리. 코드를 초기화하고 복습으로 다시 풀면 여러 유형의 문제들에 대한 감을 익히는데 도움을 주지 않을까 한다. 그래서 유형별 문제들을 정리해본다! 내가 경험한 바로는 1 티어 기업들(라인, 네이버, 카카오, 쿠팡 등등...)의 코딩 테스트를 통과하려면 Level 3와 Level 2(중에서도 난이도 높은 분야)의 문제를 풀어본 배경들이 있어야 한다. (필수적!!) 또한 몇몇 문제에서는 효율성의 함정이 있을 수 있다는 것도 고려해야 한다. 코딩 테스트에서는 알고리즘 풀이 + 효율성 테스트에 대한 문제가 각각 출시되기 때문!! 완전 탐색(BFS, DFS) 순열(Permutation) [ 순열을 직접 짜보는 힘을 기르자! ] 1. 단체 사진 찍기. link :..
2021 카카오 블라인드 채용 메뉴 리뉴얼 [프로그래머스][Level2] [자바] 문제 분류 - 프로그래머스 레벨 2 [ 체감은 3 정도... ] - 완전 탐색(조합), Map 자료구조, 정렬 필요한 예상 시간 - 빠르게 파악하면 1시간. 디버그 하면서 진행하면 2시간 첫 25분의 고민과정 손님이 주문한 단품 메뉴들에서 반복해서 주문되는 단품 메뉴의 조합을 찾고 우선순위를 매기는 문제이다. 10~ 15분 정도를 고민했을 때 그렇다 할 알고리즘이 떠오르지 않았다. 막막할 때의 해결책은 모든 가능성을 탐색하는 것이다. 그리고 알고리즘에서는 이 방식을 완전 탐색이라고 부른다. 각 손님이 주문한 메뉴들에서 course로 들어온 인자들에 대해서 조합의 개수를 구하는 것이다. 그리고 그 조합들을 Map 자료구조에 넣어서 카운팅을 하는 것! Map map = new HashMap(); boolea..
프로그래머스 - 단체사진 찍기 [Level2] [ 카카오 2017 본선] [자바] 첫 25분의 고민 과정 3개의 모듈로 분해하기 문제를 읽고 가장 먼저 떠올린 것은 순열이었다. 조건을 파싱 해서 조건에 맞게 인원들을 배치시키고 순열의 결과를 얻어내고자 했다. 예를들어 라이언와 어피치의 거리가 0이라면 라이언와 어피치를 하나로 묶고 나머지 인원들을 배치시키는 방식으로 순열의 경우의 수를 구하는 것이다. 하지만 n개의 원소로 주어지는 data는 무려 100개까지도 주어질 수 있다. 이 모든 것을 파싱해서 캐릭터들을 묶어내는 것?은 불가하다고 판단했다. [ data로 주어질 수 있는 경우의 수는 어마무시하다. 조건 3개, 숫자 간격 0~6, 케릭터 2개를 뽑는 조합... ] 다행히도 친구들의 수는 8개로 고정적이다. 완전 탐색으로 순열을 고려하면 8!로 40320의 경우의 수가 존재한다. ..
2019 카카오 개발자 겨울 인턴십 - 튜플- [프로그래머스][Level2] 1시간 30분 ~ 2시간이 걸린 문제. 정렬 + Map 자료구조 + String API + pointer(알고리즘 기법)의 활용 등등 알고리즘에서 자주 활용하는 기술들을 많이 활용할 수 있었던 문제여서 좋았다. 다른 사람들의 풀이를 보니 { , } 구분을 위해서 replaceAll을 활용하는 경우가 많았다. [ 한수 배우고 간다. ] 나의 경우 {의 위치와 }위치를 가리키는 포인터 변수를 따로 두어서 문제를 풀었다. 크게 3부분으로 나뉘어 문제를 바라보고 풀어야 할 만큼 까다로운 문제였다. 1. 문제에 대한 접근 문제를 읽자마다 split(",")하고 배열 길이만큼 정렬한 뒤 값을 추출해서 Map에 넣어서 처리하면 그만이겠구먼! 하고 자신 있게 접근했다. split(",")하는 순간 집합의 내부에 있는 ..
프로그래머스 Level2 프린터. [상당히 애먹은 문제..] [ 나만의 풀이 ] Queue의 활용보다는 도메인 로직이 더 까다로웠던 문제 문제가 언급한 규칙 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. J를 인쇄하고 다시 1, 2, 3의 규칙이 진행된다. EX. [2, 1, 3, 5, 4]라고 할 때 가장 중요한 우선순위를 가진 5가 나올때까지 앞에 모든 문서들은 뒤로 넘어간다. => [5, 4, 2, 1, 3] 이후 5를 프린트한다. [ 4, 2, 1, 3] 4가 다음으로 우선순위가 높으므로 바로 프린트한다. [2, 1, 3] => [1, 3, 2] => [3, 2, 1] 이 되며 순차적으로 3, ..
프로그래머스 - 소수 만들기 들어가며... 너무 복잡하게 생각하는 것도 문제가 된다. 알고리즘을 풀다 보면 해당 문제를 어떤 방식으로 풀어야 할지에 대한 도구를 찾게 된다. 이중 혹은 삼중 반복문으로 풀 수 있을까? DFS 혹은 BFS를 통해서 전방위적으로 탐색한 후 최적의 값을 도출해야 할까? 이후 어떤 자료구조를 사용하게 되는지에 대한 질문을 거치게 된다. [ DFS는 스택, BFS는 큐 이런식... ] 현재 프로그래머스 사이트의 도움을 받아서 level1의 난이도를 가진 문제들을 풀어보고 있다. 그러다 소수 만들기라는 문제를 풀게 되었는데 꽤나 많은 고민을 준 문제 같아서 이렇게 글을 남겨본다. 문제에 대한 설명 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums..

반응형