profile
성장하는 신입 백엔드 개발자입니다 :)

[프로그래머스 / Level2] 수식 최대화 (Java)

문제 보기 사용한 것 연산자 우선순위의 모든 경우를 계산하기 위한 DFS 수식을 계산하기 위한 중위 표기법 -> 후위 표기법 변환 & 계산 풀이 방법 DFS 돌면서 연산자 별로 우선 순위를 정하고, 모두 정해지면 calc() 연산자 우선순위를 고려하여 중위 표기법 -> 후위 표기법으로 변환 후위 표기법을 계산한 뒤 절대 값이 max 보다 크면 교체 ma...

어제
·
0개의 댓글

프로젝트 중 느낀 JPQL Fetch Join의 필요성

프로젝트에서 헤어샵과 날짜별로 예약 가능 시간들을 포함한 디자이너 리스트를 출력하는 기능이 필요했다. 헤어샵과 디자이너가 일 대 다, 디자이너와 예약이 일 대 다 관계이고, request와 response는 다음과 같다. 그렇다면 DesignerRepository에서 디자이너와 예약을 join하여, 해당 헤어샵의 디자이너들 중 해당 날짜의 예약이 존재하...

3일 전
·
0개의 댓글
post-thumbnail

이더넷(Ethernet)이란?

세그먼트: data에 4계층(TCP 등)이 붙은 것패킷: 세그먼트에 3계층(IP 등)이 붙은 것프레임: 패킷에 2계층(Ethernet 등)이 붙은 것2계층인 데이터링크 계층에 속함IEEE 802.3으로 표준화 됨단거리는 UDP케이블, 장거리는 광케이블을 통해 전송비용이

4일 전
·
0개의 댓글

[프로그래머스 / Level3] 광고 삽입 (Java)

문제 보기 사용한 것 누적 재생시간이 가장 많이 나오는 곳을 구하기 위한 누적 합 시간을 String int로 변환하는 toIntTime(), toStrTime() 풀이 방법 "HH:MM:SS" (String) -> seconds (int)로 변환하여 풀이 log

6일 전
·
0개의 댓글

[프로그래머스 / Level3] 순위 (Java)

문제 보기 사용한 것 순서가 없고 중복을 허용하지 않는 자료구조 Set 풀이 방법 Result 클래스에 Set으로 win, lose 필드 생성 Map 로 선수 별 결과를 저장 A가 B를 이기면 A win에 B, B win 추가 B lose에 A, A lose 추가 A lose들을 돌면서 B, B win 추가 B lose들을 돌면서 A, A...

7일 전
·
0개의 댓글

Spring Service 단위 테스트에서 Mockito 사용하기

팀 프로젝트를 하면서 테스트 코드 작성에 문제가 발생하였다. 협업을 위해 도메인별로 파트를 나눴었고, 내가 맡은 도메인은 여러 도메인과 얽혀있어 독립적이지 않았다. 따라서 내가 맡은 도메인 제외, 연관 관계에 있는 모든 엔터티들을 구현하고 실제로 jpa repository를 사용하기에는 무리가 있었다. 그래서 mock repository를 사용한 se...

2022년 6월 22일
·
0개의 댓글

커밋 메시지, PR 규칙

프로그래머스 데브코스에서 새로운 팀 프로젝트를 시작한다. 협업을 진행하면서 깃허브로 형상 관리를 할 예정이기 때문에 커밋과 PR의 컨벤션을 정해보려 한다. 커밋 메시지 >-예시- ✨로컬 로그인 기능 추가 (생략 가능) 부연 설명 (생략 가능)

2022년 6월 19일
·
0개의 댓글

[백준 / 골드5] 2110번 공유기 설치 (Java)

문제 보기 사용한 것 시간 복잡도를 통과하기 위한 이진 탐색 이진 탐색 중 upper bound 사용 풀이 방법 간격을 1부터 마지막 집의 X좌표 - 첫 집의 X좌표 까지 이진 탐색으로 가능한지 탐색 upper bound를 사용하여 불가능한 가장 작은 인덱스 구함 일반적으로 정답은 upper bound 결과 값 - 1 하지만 마지막 인덱스가 가능...

2022년 6월 18일
·
0개의 댓글

[백준 / 골드2] 7453번 합이 0인 네 정수 (Java)

lower bound: k값 이상이 처음 나오는 인덱스 구하기 upper bound: k값 초과가 처음 나오는 인덱스 구하기 문제 보기 사용한 것 시간 복잡도를 통과하기 위한 이진 탐색 이진 탐색 중 lower bound, upper bound 사용 풀이 방법 a

2022년 6월 18일
·
0개의 댓글

[백준 / 골드3] 9466번 텀 프로젝트 (Java)

문제 보기 사용한 것 조건을 만족하는 경우만 계산하기 위하여 Stack으로 구현한 백트래킹 사용 그래프의 순환을 판별하기 위한 visited, finished 풀이 방법 팀을 이룬다는 것 -> 순환한다는 것 순환하는 정점의 개수인 numOfCircle을 0으로 생성 for문을 돌며 index 0 부터의 정점을 시작으로 단방향으로 계속하여 이동 방문한 정...

2022년 6월 18일
·
0개의 댓글

[백준 / 실버1] 14888번 연산자 끼워넣기 (Java)

문제 보기 사용한 것 가능한 모든 경우의 수를 구하기 위한 DFS 풀이 방법 사용 가능한 연산자를 나타내는 opNums 에 따라 dfs() 진행 depth == N이 되면 값이 min 보다 작으면 교체, max 보다 크면 교체 코드

2022년 6월 18일
·
0개의 댓글

[프로그래머스 / Level3] 합승 택시 요금 (Java)

문제 보기 사용한 것 최소 비용을 구하기 위한 다익스트라 알고리즘 다익스트라 구현을 위한 PriorityQueue 풀이 방법 fares로 인접 행렬 생성 출발 지점부터 모든 정점 까지 최소 비용을 다익스트라로 구하기 -> together 정점을 for문으로 돌며 해

2022년 6월 10일
·
0개의 댓글

[프로그래머스 / Level2] 행렬 테두리 회전하기 (Java)

문제 보기 사용한 것 rows, columns 크기의 행렬 matrix rotate(): 행렬을 시계방향으로 회전하고 최솟값 반환 Queue 사용하여 구현 풀이 방법 rows, columns 크기의 행렬을 생성하고 1부터 차례대로 넣어 줌 queries.length 크기의 int 배열 answer 생성하고 answer.length 만큼 for문 돌...

2022년 6월 10일
·
0개의 댓글
post-thumbnail

HTTP 메시지 구조

HTTP 메시지 HTTP 메시지는 다음과 같이 구성된다. Start Line Header Empty Line Body Request 메시지와 Reponse 메시지의 구조가 다른 부분이 있으므로 나누어 알아보자. Request, Response 공통

2022년 6월 10일
·
0개의 댓글
post-thumbnail

해시 테이블(Hash Table)이란?

해시 테이블(Hash Table) 해시 테이블이란 key를 이용하여 value를 저장하는 자료구조이다. 저장, 검색, 삭제의 평균적인 시간 복잡도가 O(1)에 수렴하여 그 이유는 다음과 같다. key를 특정 해시 함수(Hash Function)를 통하여 해싱한 결과 값을 해시 테이블의 인덱스로 사용한다. 해시테이블의 key로 만든 인덱스에 value를 저...

2022년 6월 9일
·
0개의 댓글

[백준 / 골드1] 21611번 마법사 상어와 블리자드 (Java)

행렬을 리스트로 변환하여 풀이하면 접근하기 쉬울 때가 있다. 문제 보기 사용한 것 문제에서 주어지는 행렬, 효율적인 풀이를 위한 ArrayList matrixToList() : 행렬을 리스트로 변환. listToMatrix() : 리스트를 행렬로 변환. 두 메소드의 행렬의 정 중앙부터 시작해서 나선형으로 증가하는 인덱스를 다루기위한 로직은 다음과 같...

2022년 6월 8일
·
0개의 댓글

[프로그래머스 / Level3] [1차] 추석 트래픽 (Java)

문제 보기 풀이 작업의 시작 시간, 종료 시간을 저장하기 위해 Work 클래스 사용 Work를 저장하기 위해 ArrayList works 사용 어떠한 시각 기준으로 1초 동안 한 작업이 수행 중인지 여부를 계산하는 check() 메소드 사용 lines를 순회하며 작업의 시작 시간과 종료 시간을 구하여 works 에 저장 works를 순회하며 work의 ...

2022년 6월 8일
·
0개의 댓글

[프로그래머스 / Level3] 자물쇠와 열쇠 (Java)

문제 보기 풀이 정방행렬을 회전하기 위해 rotateSquareMatrix 구현 lock 의 빈 부분의 수를 count에 저장 0, 90, 180, 270 만큼 차례대로 key를 회전 시킴 lock을 확장한다고 생각하여 중첩 for문을 작성함 중첩 for문 안에 key를 순회하여 일치 여부 확인함 lock의 범위 밖이면 continue key의 ...

2022년 6월 7일
·
0개의 댓글

[백준 / 골드4] 1939번 중량제한 (Java)

문제 보기 > 이진 탐색 + 브루트 포스 조합을 기억하자. 풀이 한 번의 이동에서 옮길 수 있는 물품들의 무게의 최댓값을 효율적으로 구하기 위하여 이진 탐색 사용 해당 무게로 출발지에서 목적지까지 도착할 수 있는지 확인하기 위하여 BFS 사용 목적지와 건널 수 있는 무게를 필드값으로 가지고 있는 Bridge 사용 bridges를 만들고 초기화 시켜줌 ...

2022년 6월 7일
·
0개의 댓글

[백준 / 실버1] 1931번 회의실 배정 (Java)

문제 보기 풀이 O(nlog n) 만큼의 정렬(사실 Arrays.sort()는 최악 O(n^2)이긴 함) + O(n) 만큼의 순회로 문제를 해결하기 위해 그리디로 접근 2차원 int 배열 usages에 {startTime, endTime}인 int 배열을 입력 받음 최대한 많은 예약을 하기 위해선 endTime이 빠른 것부터 예약시키면 됨 -> 그리디 ...

2022년 6월 6일
·
0개의 댓글