๐ ์ ์ฒด ์นดํ ๊ณ ๋ฆฌ
[Trouble Shooting] Swagger-ui๋ฅผ ์ ์ํ์ ๋ 404 error๊ฐ ๋๋ ๊ฒฝ์ฐ
์ด์ ํ๋ก์ ํธ์์ Swagger๋ฅผ ์ฌ์ฉํด ๊ฐ์ ์ค์ ์ผ๋ก Swagger๋ฅผ Config ํ์ผ๋, ๋ก์ปฌ์์ ํด๋น URL๋ก ์ ์ํ์ ๋ 404 Error๊ฐ ๋์ค๋ ํ์์ ๋ฐ๊ฒฌํ๋ค. ๋ฌธ์ ์ ์์ธ์ ๋ฌ๋ผ์ง ์คํ๋ง ๋ถํธ์ ๋ฒ์ ์ผ๋ก, ์ด์ ์๋ 2๋ฒ์ ์ ์ฌ์ฉํ๋ค๋ฉด ์ง๊ธ์ 3๋ฒ์ ์ ์ ํํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ์ค๋ฅ๋ค. ํด๊ฒฐ์ฑ ์ ์ฐพ์๊ณณ์ Stack Overflow์๋ค. https://stackoverflow.com/questions/74614369/how-to-run-swagger-3-on-spring-boot-3 How to run Swagger 3 on Spring Boot 3 Using a fresh Spring Initialzr with Java17 and Spring Boot 3.0.0, and an extra addi..
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ๊ตญ์ฌ์ฌ (level3, python)
๐ค ํ์ด ์ฝ๋ def check(n, times, k): can_enter = 0 for t in times: can_enter += k // t return True if can_enter >= n else False def solution(n, times): answer = 0 start = 0 end = min(times) * n mid = start while mid + 1 != end: mid = (start + end) // 2 if check(n, times, mid): end = mid else: start = mid return end ๐ค ๋ฌธ์ ํ์ด ์ด๋ถํ์์ผ๋ก ํ์ดํด์ผ ํ๋ ๋ฌธ์ ์ ๋๋ค. ํญ์ ์ด๋ถ ํ์์ ์์์ ๊ณผ ๋์ ์ ์ก๋ ๊ธฐ์ค๊ณผ, ์ด๋ค ๊ฒ์ ์ด๋ถํ์์ ์ฌ์ฉํด์ผ ํ ์ง ํ๋จํ๋๊ฒ ์ด๋ ต๋ค..
[DEVLOG] @Builder์ @Builder.Default
๐ค @Builder๊ฐ ๋ฌ๋ ค์๋ ํด๋์ค์ ํ๋๋ฅผ ์ด๊ธฐํํด์คฌ๋๋ฐ, ์ ๋น๋ ํจํด์ ์ฌ์ฉํ๋ฉด ์ด๊ธฐํ ๊ฐ์ด ์๋ Null์ด ๋์ค์ง? ๐ช GTAccountInfo ์ํฐํฐ์ ์ฝ๋ ์ผ๋ถ @Slf4j @Builder @NoArgsConstructor @AllArgsConstructor @Entity(name = "gt_account_info") public class GTAccountInfo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ACCOUNT_ID") private long id; @Getter @Column(name = "account_email") private String accountEmail; @Getter @Col..
[DEVLOG] JUnit5๋ฅผ ํ์ฉํ ํ ์คํธ ์ฝ๋ ์์ฑ๊ณผ @DataJpaTest ์ฌ์ฉ์ ๋ฐ์ํ ๋ฌธ์ ํด๊ฒฐ
๐ค Spring Data JPA๋ฅผ ์ฌ์ฉํ๋ฉด์ JPA ๊ด๋ จ ํ ์คํธ๋ง ์งํํ๊ณ ์ถ์ ๋ ๋ชจ๋ ๋น์ ๋ฑ๋กํ๋ @SpringBootTest ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ท๋ชจ๊ฐ ์ปค์ง ์๋ก ์๋๊ฐ ๋๋ ค์ง๋๋ค. ํ์ง๋ง, JPA ๊ด๋ จ ํ ์คํธ๋ง ์งํํ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ๋ถ๋ช ํ๊ฒ ์กด์ฌํฉ๋๋ค. ์ด์ ๊ฐ์ ๊ฒฝ์ฐ์๋, @DataJpaTest ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํฉ๋๋ค. @DataJpaTest class GTMemberEntityTest{ @Autowired private GTAccountInfoRepository accountInfoRepository; @Autowired private GTMemberInfoRepository memberInfoRepository; @Autowired private GTAccountUserRo..
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ (level2, python)
๐ค ํ์ด ์ฝ๋ from collections import deque def bfs(start, place): queue = deque() queue.append([start[0], start[1], 0]) visited = [[False for _ in range(5)] for _ in range(5)] visited[start[0]][start[1]] = True dx = [0, 0, -1, 1] dy = [1, -1, 0, 0] candidate = [] while queue: a, b, dist = queue.popleft() for i in range(4): nx = dx[i] + a ny = dy[i] + b if 0
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฉ์ฉกํ ์ฌ๊ฐํ (level2, python)
๐ค ํ์ด ์ฝ๋ import math def solution(w,h): return w * h - (w + h - math.gcd(w, h)) ๐ค ๋ฌธ์ ํ์ด ์ฝ๋๊ฐ ์งง์์ ์ฌ์ด ๋ฌธ์ ์ฒ๋ผ ๋ณด์ด์ง๋ง, ์ ์ ๋ฐ ์์ด ๋์๋์ง ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ฌธ์ ์์ ๋์จ ์ด ์์๋ฅผ ํ ๋ฒ ๋ด ์๋ค. ๊ฐ๋ก 8, ์ธ๋ก 12์ ์ฌ๊ฐํ์ผ๋ก, ์ผ์ ํ ํจํด์ด ๋ฐ๋ณต๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ์์ ๊ฐ์ ๊ฐ๋ก 2, ์ธ๋ก 3์ ์ฌ๊ฐํ์ ํจํด์ด ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ฃ . ๊ณ์ฐํ๋ฉด, ๊ฐ๋ก 8 ์ธ๋ก 12์ ์ฌ๊ฐํ์, ๊ฐ๋ก 2, ์ธ๋ก 3์ ์ฌ๊ฐํ์์ ์ ์ ๊ฑธ๋ฆฌ๋ ์ฌ๊ฐํ์ ๊ฐ์ * 4์ ๋๋ค. ์ฌ๊ธฐ์ 4๋ผ๋ ์ซ์๋, 8๊ณผ 12์ ์ต๋ ๊ณต์ฝ์์ธ๊ฒ์ ์ ์ ์์ต๋๋ค. ๋ํ ๊ฐ๋ก 2์ ์ธ๋ก 3์ ์๋ก์ ๊ด๊ณ์์ ์ ์ ์์ฃ . ๋ฐ๋ผ์ ์ต๋ ๊ณต์ฝ์๋ฅผ ..
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌํ๊ฒฝ๋ก (level3, python)
๐ค ํ์ด ์ฝ๋ from collections import deque import copy def bfs(start, ways, visited, n): queue = deque() queue.append([start, start, visited]) candidate = [] while queue: now, log, visit = queue.popleft() if len(log) == 4 * n - 1: candidate.append(log) continue for next in ways[now]: visited_key = now + next if visit[visited_key] != 0: visit[visited_key] -= 1 queue.append([next, log + " " + next, cop..
[ํ๋ก๊ทธ๋๋จธ์ค] ๋์คํฌ ์ปจํธ๋กค๋ฌ (level3, python)
๐ค ํ์ด ์ฝ๋ import heapq from collections import deque def solution(jobs): # jobs : [์์ ์ด ์์ฒญ๋๋ ์์ , ์์ ์ ์์์๊ฐ] answer = [] job_queue = deque(sorted(jobs, key=lambda x : x[0])) heap = [] time = 0 while job_queue or heap: # ์์ ํ์์ ์คํ๊ฐ๋ฅํ ํ์ผ๋ก ์ด๋ while job_queue and job_queue[0][0]