전체 글
[Kotlin] if - in 0..100 시간 복잡도
코틀린 문법 강의를 듣던 중, score가 Int 타입일 때 score in 0..100 은 모든 숫자를 비교해 시간 복잡도가 O(N) 이라 0
365일 동안의 알고리즘 하루 한 문제 끝
깃허브 문제풀이 기록 링크 처음 시작할 땐 이렇게 오래할 줄 몰랐는데 지나고 보니 덕분에 많이 성장한 것 같아 뿌듯하고 좋다. 끝내는 이유: 요즘 네이버파이낸셜 인턴을 진행 중이라 오전 9시에 집에서 나오고 오후 8시 30분에 집에 도착한다. 집에 도착해서 문제를 풀어보고 있었지만 많이 버거웠고 알고리즘 한 문제를 풀면 따로 개인 공부 시간을 가지기 어렵다. 지금 중요한 건 인턴 과제라 이에 집중해보고자 여기까지 하려고 한다. 백준 단계별로 풀어보기 2022. 01. 27. ~ 06. 01. (125일) 125일 간 백준 단계별로 풀어보기를 풀었다. 초반에는 방학이기도 하고 문제가 쉽고 재밌기도 해서 하루종일 문제만 풀었다. 모르는 유형의 문제나 자료구조가 나오면 구글에 검색해 공부해가면서 풀었다. So..
네이버 파이낸셜 백엔드 인턴 코테, 면접 후기
인턴이지만 네이버 파이낸셜에 근무해보는 경험을 할 수 있게 돼서 너무 기쁘고, 좋은 분들을 만나고 많은 것들을 배울 수 있을 것 같아 기대된다. 전환율은 되게 낮다고 하는데 전환될 수 있도록 7주 동안 정말 열심히 해야겠다💪 이번 코딩테스트는 히든 테케가 있고 복사가 불가능했으며 자바, 코틀린 둘 중 하나로만 응시 가능했다. 여태 코딩테스트는 전부 파이썬으로만 응시했었기에 걱정을 조금 했지만 평소에 파이썬 라이브러리에 의존하지 않고 문제를 풀었던 게 도움이 많이 됐다. 코테 당일 이후로 자바로 알고리즘을 풀어야 하나 고민이 됐다. 자바의 import와 긴 문법을 IDE 없이 사용할 줄 아는 것은 불필요하다고 생각했고 코틀린을 조금씩 익히면서 알고리즘을 풀면 도움이 많이 되겠다 생각해서 코틀린으로 알고리즘..
코드스테이츠 백엔드 부트캠프 프로젝트 기술 회고
프로젝트 깃허브 링크 프로젝트 배포 링크 프로젝트 API 문서 🔒 Security JWT 세션 인증 방식을 사용하는 게 개인적으로 안전하다고 생각하지만 AWS 프리티어 서버를 사용해야 하기 때문에 서버의 부담을 줄이고자 JWT를 사용했다. ArgumentResolver 로그인된 멤버의 아이디를 가져오기 위해서는 HttpServeletRequest에 담긴 토큰이나 SecurityContext에서 memberId를 가져오는 보일러 플레이트 코드가 생긴다. 이를 없애기 위해 ArgumentResolver를 사용해 @MemberId 애너테이션으로 memberId를 가져오도록 구현했다. 🎈 Redis 인기 검색어 인기 검색어는 Redis의 SortedSet을 사용해서 구현했다. 상품을 검색할 때 해당 상품이 1개..
코드스테이츠 백엔드 부트캠프 Section 4 회고
📝 회고 이번 섹션은 스프링에 보안을 어떻게 적용하는지, 서버 배포를 어떻게 해야 하는지 배웠고 Spring WebFlux도 간단하게 경험해보았다. Spring Security는 아직 부족한 것 같아 다음 프로젝트에서 직접 적용하면서 더 자세히 배워보고 싶다. 도커는 처음 사용해봤는데 여러 서버를 쉽고 빠르게 띄울 수 있었고, 이런 기술이 가능하다는 게 신기하고 재밌었다. 이제 드디어 부트캠프에서 프로젝트에 들어가게 된다. 내일 랜덤으로 팀빌딩을 하게 되는데, 어떤 팀원을 만나게 될지 걱정도 되고 기대도 된다. 한 달 전에 동기들과 개인적으로 시작한 프로젝트는 거의 마무리됐다. 코드 리팩토링과 배포만 하면 끝난다. 빨리 끝낼 수 있을 것 같았던 테스트들이 너무 오래 걸려서 늦게까지 잠을 못 이룬 적도 있..
2023 카카오 신입개발자 블라인드 채용 1차 / 2차 코딩 테스트 후기
1차 - 7문제 중 3솔 (1번, 4번, 6번) 2차 - 845점 ( 1등 969.8점, 100등 900.6점) 1차 코테를 본 후 내가 많이 부족하다고 느꼈고 불합격할 줄 알았다. 3솔을 하고 불합격 한 사람도 있다고 하는데 문제 배점 덕분에 겨우겨우 턱걸이한 것 같다. 특히 토스 코테를 볼 때도 완전 탐색 문제를 그리디로 시도를 했는데 이번에도 똑같은 실수를 하고 말았다. 완전 탐색 문제를 많이 풀어보지 않아서 그런 것 같기도 하다. 정말로 다음엔 실수하지 말아야지.. 카카오 기출문제를 많이 풀어보지 못해서 그런지 문제가 전부 새로웠다. 그래서 1차 코테를 본 후 백준에서 골드 하루 한 문제를 푸는 방법에서 프로그래머스 Lv. 3 하루 한 문제를 푸는 공부 방법으로 바꿨다. 난이도가 천차만별인 것 같..
코드스테이츠 백엔드 부트캠프 Section 3 회고
📝 회고 이번 Section에서는 Spring MVC의 동작 방식과 Security를 제외한 대부분의 지식을 전반적으로 학습했다. Spring이 어떻게 돌아가는지에 대한 메커니즘을 조금 이해할 수 있게 되었다. 이 학습 덕분에 전에는 전혀 이해하지 못했던 유튜브의 스프링 코드 리뷰 컨텐츠도 어느 정도 이해를 할 수 있게 되었다. 이런 컨텐츠들을 보는 건 재밌기도 하고 프로젝트나 실무에서 코드를 작성할 때 도움이 될 것 같아 추가로 찾아서 보려고 한다. DB 접근 기술로는 Data JDBC, Data JPA를 배웠다. 비교적으로 JDBC보다 JPA가 어렵긴 하지만 실무에서 JPA를 많이 사용하고 JPA가 주는 이점이 있기에 더 자세하게 배우려고 인프런에서 JPA 강의를 구입해 수강하고 있다. JPA와 같은..
[JPA] 패턴, 준영속 엔티티
📄 도메인 모델 패턴 엔티티 안에 비즈니스 로직이 포함된 패턴 객체지향을 활용하는 기법 📄 트랜잭션 스크립트 패턴 서비스 계층에서 모든 비즈니스 로직을 처리하는 패턴 [디자인패턴] Domain Model Pattern vs Transaction Script Pattern Domain Model Pattern [도메인 모델 패턴]이란? 대부분의 비즈니스 로직이 엔티티 안에 구성되어있습니다. 서비스 계층은 엔티티에 필요한 역할을 위임하는 역할을 합니다. 엔티티 안에 비즈니스 로직 applepick.tistory.com 📄 준영속 엔티티 영속성 컨텍스트가 더 이상 관리하지 않는 엔티티 임의로 만든 엔티티도 식별자를 갖고 있다면 준영속 엔티티로 볼 수 있다. 준영속 엔티티를 수정하는 방법 1. 영속 엔티티를 가..