study


  • [우아한테크코스] 6기 1차 합격, 최종 코딩 테스트 후기

    우테코 1차 합격을 본 건 시간이 좀 지나고 나서였다. 12월 11일에 1차 합격 발표가 나왔는데, 그 주간이 학교 시험 주간인 데다, 3시가 넘어서야 시험이 끝나는 바람에 부랴부랴 계단으로 가서 합격 결과를 확인했다. 프리코스 1주차 PR 제출자가 2500명이 넘었던 데다가, 2배수인 걸 감안하면 160명 안팎으로 1차 합격자가 선발됐을 것이다. 내가 쟁쟁한 경쟁률을 어떻게 뚫었을까..? 싶었던 1차 합격. 한 달동안 열심히 프리코스만 쳐다본 것을 생각하면 노력을 알아주신 것 같아 감사하기도 하다. 12월⋯


  • [우아한테크코스] 프리코스 3주 차: 로또 회고

    2주 차에 진행했었던 자동차 경주에 이어서, 이번 주 차 미션은 로또였다. 생각보다 간단한 문제였는데 요구사항은 신경써야 할 것이 많았다. 저번 주 자동차 경주에서 많은 사람들에게 내 코드를 보여드리고 리뷰를 받았는데, 다 됐다! 라고 생각해서 제출한 부분도 다시 보니 개선할 부분이 있었고… 그런 부분이 너무나도 많았고… 결국에는 다 벗겨진 나의 코드가 되었다. 멋쟁이 코드를 작성하기 위해서는 좋은 동료들이 꼭 필요하다는 것을 다시금 느꼈다. 이번 주에는 지난 2주보다 프리코스에 쏟을 시간이 많지⋯


  • KUPC 2023 개최 후기

    작년 이야기 학교에 입학할 때만 해도 많은 학생들이 알고리즘 문제풀이에 관심을 가졌던 건 아니었다. 2019년에는 동아리에 속했던 사람들끼리 스터디를 하는 정도였고, UCPC나 ICPC 등의 대회에 참여하는 소식을 듣지 못 했다. 알지 못했으니 참여할 생각도 못 했다. 2022년에 군복무를 마치고 복학하고 나서 들었던 과목은 김성렬 교수님의 알고리즘이었다. 즐겁게 들었던 것을 넘어서서 공부법에 대해서 깨달은 게 많았다. 단순히 증명 위주의 과목이었음에도 불구하고, 더 즐겁게 문제풀이에 적용할 수 있었다. 코로나의 여파로 많은 동아리들이⋯


  • [우아한테크코스] 프리코스 2주 차: 자동차 경주 회고

    1주 차가 끝나기 무섭게 두 번째 과제가 던져졌다. 이번에는 과제와 함께 1주 차에서 사람들이 많이 헤맸던 부분을 피드백해주는 공통 피드백 또한 올라왔다. 하나씩 읽어보면서 나에게 해당되는 것은 없었는지, 공부할 것이 더 있었는지 살펴봤다. 가장 중요한 항목이라 짐작됐던 것은 요구사항을 제대로 분석한다는 것이었다. 주어진 과제에서 하라는 대로 하고, 그렇지 않은 항목에 대해서는 1주 차 회고에서도 적어두었지만 애매한 부분이나 적혀있지 않은 사항에 대해서는 ‘마음대로 해라‘가 아니라, ‘적당한 조치를 한 뒤 문서에 작성하라‘라고⋯


  • [우아한테크코스] 프리코스 1주 차: 숫자야구 회고

    우테코 프리코스 과정이 시작됐고, 첫 미션이 공개됐다. 1주차 미션은 숫자야구 게임. 어릴적에 시골 가는 기차에서 가족끼리 종이 한 장과 펜 하나면 즐길 수 있는 간단한 게임이었다. 하지만 막상 이걸 구현하라고 하니 어디부터..? 라는 생각부터 들었다 😂 우리가 알고 있는 숫자야구 게임을 코드로 적어야 한다. 랜덤하게 세 자리 수를 고르는 것부터, 스트라이크/볼 판정 등 구현해야 할 게 많았다. 사실 구현할 게 많았다는 말보다, 모두 구현해야 한다는 말이 정확한 것 같다. 해당⋯


  • [우아한테크코스] 지원, 프리코스 안내

    작년 이맘때쯤에도 우테코 5기 지원이 한창이었다. 그때도 지원에 대한 많은 고민을 했고, 학교 공부를 지속해나가는 것이 더 재미있어서 1년간 학교를 더 다녔다. 그 와중에 우테코 5기분들이 올려준 테코톡이나 블로그 글이 흥미로워 읽어보기도 하고, 다양한 시각을 접할 수 있었던 터라 다음 기수에 대한 욕심을 키워나갔다. 올해에도 어김없이 우테코 모집공고가 발표됐다. 시간은 흘러 어느새 6기 모집이 되었고, 올해에는 도전해보려고 한다. 지원접수 기간과 프리코스 기간이 중간고사와 겹쳐있어서 꽤나 신경쓰였다. 자기소개서에는 최대한 나의 경험과⋯


  • Longest Increasing Subsequence (LIS)를 NlogN에 구하기

    최장 증가 수열이라고 불리는 Longest Increasing Subsequence (LIS)라는 문제는 간단하지만 강력한 문제 중 하나이다. 이 문제는 다이나믹 프로그래밍을 활용한 $O(N^2)$ 풀이와 이분 탐색을 활용한 $O(NlogN)$ 풀이가 잘 알려져 있는데, 이분 탐색을 활용한 풀이가 어떻게 최적화되었는지에 대한 설명을 이 글에서 적고자 한다. Naive solution: Bruteforcing 간단하게 생각해보자. 모든 부분 수열에서 오름차순을 이루는지 확인해보면 된다. 모든 원소가 부분 수열에 속하거나 속하지 않는 두 가지 상태를 가진다. 길이 $N$의 수열이라면 $2^N-1$개의 부분 수열이⋯


  • JPA @Query에서 비트 연산자 (Bitwise AND) 사용하기, 트러블슈팅

    TL;DR @Query 어노테이션이 붙은 친구들은 HQL/JPQL로 작성한다. Hibernate 6.0.0 버전부터 $\texttt{BITAND}$ 함수가 추가돼 이를 사용할 수 있다. 단, $\texttt{BITAND}$ 내부에 우리가 함수 인자로 던져주는 값이 들어있다면, 해당 값을 아래와 같이 적절히 캐스팅해 주어야 한다. 비트 연산 교내에서 진행했던 해커톤에서 비트 연산한 값을 기준으로 데이터베이스에 쿼리를 보내야 할 일이 생겼다. 간단한 요리 레시피들을 필터검색할 때, 특정 조리도구들을 포함한 레시피들을 알아내야 했다. 조리도구의 양이 많지 않았어서 조리도구 하나하나를 비트로 하는 $\texttt{long}$ 타입의⋯


  • UCPC 2023 본선 후기

    예선은 참가자로, 본선은 스태프로 대회를 보낸 사람이 얼마나 있을까? 예선에서 6솔로 아쉽게 탈락한 우리 팀을 뒤로하고, 본선에 진출(?)하게 된 기록을 남긴다! 예선 탈락자가 본선 대회에 등장하게 된 이유 대회 본선은 7월 22일(토)에 진행될 예정이었다. 그보다 이틀 앞선 20일에 UCPC 동아리 디스코드에 하나의 공지가 올라왔다. 정말 놀랍게도 이 시간에 깨어 있었다… 디스코드 알림도 원래 자주 확인하는 편이 아닌데도 확인했다… 확인하자마자 함께하고 싶다고 말씀드렸고, 정말 뒤늦게 스태프로 함께하게 되었다. 함께하게 돼서 정말⋯


  • 알고리즘에서의 해시 함수

    해싱이라는 건 알고리즘 문제풀이를 해 봤다면 한 번쯤은 들어 보았을 분류이다. 주로 파이썬의 dict, C++의 unordered_set 등이 해싱을 사용해서 구현되었다. 삼성 동계 DX 알고리즘 특강을 들을 때, 해싱을 직접 구현해서 문제를 풀어야 하는 일이 있었다. 해시 함수를 직접 만든 뒤에, 해시가 가지는 시간상의 이점을 활용해서 문제를 해결한다. 그때 당시에는 문제를 푸는 데 꽤나 고생했다. 시간이 조금 지나서 다시 공부해보고 기록한다. 정리한 글에 오류가 있을 수 있습니다. 댓글로 남겨주시면 반영하겠습니다.방문해주셔서 고맙습니다⋯


Categories