분류 전체보기 381

2022년 7월 2주차(7/11 ~ 7/15) Weekly I Learned "나태해질 뻔한 나를 구한 과제 시험"

지난 한 주 되돌아보기 마스터즈 코스를 수료한지 2주가 지났다. 수료 직후 1주차 주간에는 코딩테스트도 치르고, 마스터즈 코스 동안 학습해보고 싶었던 것(https, samesite, csrf, xss 등)도 학습해보고, 기존에 미흡했던 기술 블로그 글도 정리해보는 등 나름대로 알찬 시간들을 보냈었던 것 같았다. 하지만 2주차에 들어서는 월요일부터 뭔가 학습하기 싫어지는(?) 그런 나태한 마음이 들었고, 오랜만에 등산을 가보고 싶다는 생각이 들어 등산을 하기도 했다. 등산을 하고나니 또 영화도 보고싶다는 생각이 드는 등 뭔가 너무 나태해지는 것 아닌가 하는 마음이 들었다. 그러던 찰나 모 회사 채용 과제 시험을 보는 기회를 얻게 되었고 이를 시작하면서부터 지난 마스터즈 코스 시절 이상으로 바쁜 한 주를 ..

[백준 - 5639] 이진 트리 검색 - Java

문제 설명 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 접근 방법 해당 문제에서는 이진 트리 구조를 전위 순회한 결과를 순서대로 제공해주고 이 결과를 통해 해당 이진 트리 구조를 후위 순회한 결과를 요구하고 있습니다. 우선 해당 문제를 풀기 위해서는 전위 순회(루트 - 왼쪽 노드 - 오른쪽 노드 순 탐색)한 결과만으로 본래 이진 트리 구조를 만드는 것이 급선무였습니다. 이진 트리 구조는 단순하게 특정 노드를 추가할 때 루트 노드를 기준으로 작으면 왼쪽에, 크면 오른쪽에 배치하고 이후 부모 노드..

Algorithm/BOJ 2022.07.18

[백준 - 9663] N-Queen - Java

문제 설명 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 접근 방법 해당 문제에서는 n * n 체스판에서 n개의 퀸이 서로를 공격할 수 없도록 배치할 수 있는 경우의 수를 요구하고 있습니다. 직관적으로 n개의 퀸을 해당 체스판에 배칠할 수 있는 모든 경우의 수를 구하여 퀸들이 서로 공격하는 여부를 점검하고자하면 압도적인 시간초과가 발생합니다. 왜냐하면 n은 최대 15로, 15개의 퀸을 225칸의 배치할 수 있는 경우의 수가 엄청날 뿐만 아니라, 퀸 서로간 공격 유무를 점검하는 작업은 시간 복잡도 성능이 매우 떨어지기 때문입..

Algorithm/BOJ 2022.07.15

깃허브(Github) 공동 커밋

깃허브(Github) 공동 커밋 지난 마스터즈 코스 과정에서 페어 프로그래밍을 하면서 공동 커밋을 하는 방법에 대해 알아보았는데, 깃에서는 다음과 같은 형식으로 커밋 메시지를 작성하면 공동 커밋 기능을 제공한다. 커밋 메시지 제목 커밋 메시지 본문 Co-authored-by: author name Co-authored-by: author name 위 형식에서 커밋 메시지 제목과 커밋 메시지 본문은 우리에게 익숙하지만 'author name' 부분과 'email' 부분은 명확히 어떤 것을 작성해야하는지 의문이었다. 우선 author name은 깃의 계정명으로 깃허브 프로필 상에 나와있는 계정명 그 자체이다. 예를 들면 다음과 같다. 그렇다면 email은 무엇일까? 여기에는 깃에 등록된 자신의 메일 주소(g..

Technology/Git 2022.07.15

INSERT + UPDATE = UPSERT?

INSERT + UPDATE = UPSERT? 마스터즈 코스 과정 상 구현했었던 스프링 부트 게시판 웹 앱에서 회원가입 기능과 기존 회원 정보를 수정할 수 있는 기능이 있었다. 이때 레파지토리 단에 save라는 하나의 메서드 내에서 회원가입과 사용자 정보 수정을 구분하여 처리해주고 있었는데, Spring JDBC Template를 사용하여 나타내면 다음과 같았었다. @Override public User save(User user) { User userInformation; try { userInformation = findByUserId(user.getUserId()) .orElseThrow(() -> new NoSuchElementException("해당되는 ID가 없습니다.")); } catch (..

Technology/MySQL 2022.07.15