๐Ÿ˜Ž ์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ

    [Trouble Shooting] Swagger-ui๋ฅผ ์ ‘์†ํ–ˆ์„ ๋•Œ 404 error๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ

    [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)

    [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ž…๊ตญ์‹ฌ์‚ฌ (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

    [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 ์‚ฌ์šฉ์‹œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ

    [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)

    [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฑฐ๋ฆฌ๋‘๊ธฐ ํ™•์ธํ•˜๊ธฐ (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)

    [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜• (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)

    [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์—ฌํ–‰๊ฒฝ๋กœ (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)

    [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ (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]