Popular
-
소마 14기 합격 후기
2023년에 작성한 내용입니다. 1. 지원 비전공자이고 개발을 시작한지 약 1년정도 되었다. 6개월의 부트캠프를 수료하고 나서 취업을 바로 할지, 역량을 더 쌓을지 고민이 많았다. 첫 직장이 중요하다고 생각하기도 하고, 지금 실력으로 원하는 기업에 들어가기엔 많이 부족하다는 것을 알기에 긴 고민 끝에 나의 가치를 더 높이는 쪽을 선택했다. 목표는 싸피, 우아한테크코스, 소프트웨어 마에스트로 중 하나였다. 작년 말에 싸피와 우아한테크코스에 지원했고 싸피는 광탈, 우테코는 마지막 전형까지 가게 되었다. 2:1의 경쟁률이었는데 아쉽게도 떨어졌고, 2인 프로젝트와 취업 준비를 병행하면서 시간을 보냈다. 마지막으로 남은 것은 소마, 1월 9일 모집 공고가 올라왔고 간절한 마음으로 서류를 제출했다. 2. 자기소개서..
2024.01.14
-
MySQL Replication 구성하기 - 1 with Docker
과거에 진행했던 코인 모의투자 프로젝트에서 겪었던 문제와 Replication을 구성한 내용을 작성해보려고 한다. 1. 배경 맡았던 도메인은 사용자의 매수, 매도 주문이었고 기능 중 하나는 주문이 체결될 때마다 거래 내역을 생성해서 데이터베이스에 저장하는 것이었다. 코인의 거래량 자체가 적거나 실시간으로 거래량이 치솟아도 사용자가 걸어둔 미체결 주문량이 적으면 문제가 없었지만, 반대의 경우 거래 내역을 조회할 때 레이턴시가 길어지는 문제가 발생했다. 단주매매처럼 트래픽이 급격하게 증가하면 3초가 넘기도 했다. insert 트랜잭션이 커넥션을 많이 점유해서 병목이 생긴 것은 아닐까 싶었지만 커넥션풀 사이즈를 조정해도 큰 변화는 없었다. 그래서 read, write 쿼리에 따라 부하를 분산할 수 있는 rep..
2024.02.01
-
[Programmers-Java] 표 병합
https://school.programmers.co.kr/learn/courses/30/lessons/150366 접근 UPDATE: 부모 셀을 찾아 업데이트한다. MERGE: 유니온-파인드를 사용하여 두 셀을 합친다. UNMERGE: 부모 셀을 바라보는 셀들을 자신을 바라보도록 변경한다. PRINT: 부모 셀의 값을 출력한다. 풀이 import java.util.*; class Solution { private static List result = new ArrayList(); private static final String EMPTY = "EMPTY"; private static int[] parents = new int[2501]; private static String[] table = new..
2024.01.24
-
[Programmers-Java] 산 모양 타일링
https://school.programmers.co.kr/learn/courses/30/lessons/258705 접근 n = 1일 때 n = 2일 때 마름모 타일로 끝나지 않은 경우의 수는 마름모 타일로 끝나는 경우의 수는 n - 1번째의 모든 경우의 수에서 오른쪽으로 마름모 타일을 붙이면 된다. 마름모 타일로 끝나지 않은 경우의 수를 dp[n][0], 마름모 타일로 끝나는 경우의 수를 dp[n][1]이라고 할 때 dp[n][0] = dp[n - 1][0] * 2 + dp[n - 1][1] dp[n][1] = dp[n - 1][0] + dp[n - 1][1] n번째에 tops가 있으면 dp[n][0] = dp[n - 1][0] * 3 + dp[n - 1][1] * 2가 된다. 풀이 class Solu..
2024.04.10
-
[Programmers-Java] 두 원 사이의 정수 쌍
https://school.programmers.co.kr/learn/courses/30/lessons/181187 접근 하나의 사분면에서 점의 개수를 구해서 4를 곱한다. 원의 중심이 (0, 0)이기 때문에 원의 방정식은 x2 + y2 = r2이다. 따라서 x = (r2 - y2)1/2로 x값을 구할 수 있다. x2의 소수점을 내림, x1의 소수점을 올림하고 x2 - x1 + 1 연산하면 임의의 y 좌표에서 두 원 사이에 있는 정수 x 좌표의 개수가 된다. 풀이 class Solution { public long solution(int r1, int r2) { long answer = 0; for (int y = 1; y
2024.01.26
All
-
우아한테크코스 유연성 강화하기 시리즈 2
우아한테크코스 레벨2 글쓰기 미션에서 작성한 글이다.완벽을 내려놓았을 때, 비로소 보이는 것"완벽을 추구하는 건 정말 좋은 것 같아. 그러면 완벽해야 할 때와 완벽하지 않아야 할 때를 인지해 보는 건 어때?"유연성 강화 스터디 중 이 말을 들었을 때 머리가 멍해졌다. '왜 구분할 생각을 하지 못했지?'하는 자기성찰과 더불어, 그것을 인지하는 것만으로도 나에게 큰 변화가 생길 것 같았다.완벽주의 성향이 가장 두드러질 때를 되돌아보면 미션에서였다. 내 코드를 수십 번 읽어보고, 고쳐야 할 점을 끊임없이 찾았다. 그래서 마감 시간에 다다라서야 PR을 제출하기 일쑤였다.나는 왜 미션을 완벽하게 제출하고 싶었을까? 왜 즐기지 못하고 스트레스 받으면서 미션을 했을까?코드 리뷰는 스포츠다이 아티클은 코드 리뷰를 스포..
2024.06.17
-
우아한테크코스 유연성 강화하기 시리즈 1
우아한테크코스 레벨1 글쓰기 미션에서 작성한 글이다.유연해지는 방법, 덜 완벽하기완벽추구자와 완벽주의자의 차이점은 완벽함의 기준이 '타인'에게 있는가이다. 완벽 추구자는 자신이 최선을 다했고, 작업물의 완벽이 아닌 스스로 완벽을 추구했다고 인정하면 뒤의 결과는 겸허히 받아들인다. 과정에서 열심히 노력한 자신의 인내를 더 값지게 생각한다.반면, 완벽주의자는 최선을 다했더라도 타인의 평가가 박하면 실패했다고 생각한다. 그래서 즐기기 힘들어하고 결과에 집착한다. 결과에 어떤 실수도 용납해선 안되고, 과정에서 발생하는 실수는 숨겨야 하는 비밀이다. 좋은 평가를 받았다면 다음에 더 잘해야 한다는 부담을 갖고, 나쁜 평가를 받았다면 스스로를 자책한다.나에게 질문을 던져본다.나는 완벽추구자인가? 완벽주의자인가?평소 ..
2024.04.26
-
[Programmers-Java] 양과 늑대
https://school.programmers.co.kr/learn/courses/30/lessons/92343 접근 트리를 bfs 탐색한다. 비트마스킹으로 중복 경로 탐색을 제거한다. 경로에 포함된 노드의 왼쪽, 오른쪽 자식 노드를 추가해 나간다. 풀이 import java.util.*; class Solution { private int n; private int[] info; private int[] left = new int[17]; private int[] right = new int[17]; private boolean[] visited = new boolean[1
2024.04.12
-
Map 인터페이스와 구현체 파악하기 (1) - Map 인터페이스
우테코 미션에서 Map 자료구조를 사용하면서 Map 인터페이스의 여러 구현체를 접했다. 알고 있는 것보다 구현체 종류가 많아서 각각의 특징이 궁금해졌다. 그래서 Map 인터페이스부터 시작해서 구현체는 어떤 것들이 있는지 알아보려고 한다. Map 인터페이스 Map은 key, value 쌍으로 구성된 entry를 저장하는 자료구조이다. key로 value를 얻을 수 있고, key는 중복될 수 없지만 value는 중복될 수 있다. Map의 고유한 특성과 동작때문에 다른 Collection 프레임워크(List, Queue, Set)와 달리 Collection 인터페이스를 상속하지 않는다. 주요 메서드 자주 사용하는 메서드부터 알아보자. V put(K key, V value) key, value를 저장한다. 이미..
2024.04.11
-
[Programmers-Java] 산 모양 타일링
https://school.programmers.co.kr/learn/courses/30/lessons/258705 접근 n = 1일 때 n = 2일 때 마름모 타일로 끝나지 않은 경우의 수는 마름모 타일로 끝나는 경우의 수는 n - 1번째의 모든 경우의 수에서 오른쪽으로 마름모 타일을 붙이면 된다. 마름모 타일로 끝나지 않은 경우의 수를 dp[n][0], 마름모 타일로 끝나는 경우의 수를 dp[n][1]이라고 할 때 dp[n][0] = dp[n - 1][0] * 2 + dp[n - 1][1] dp[n][1] = dp[n - 1][0] + dp[n - 1][1] n번째에 tops가 있으면 dp[n][0] = dp[n - 1][0] * 3 + dp[n - 1][1] * 2가 된다. 풀이 class Solu..
2024.04.10