์ „์ฒด ๊ธ€ 29

[Spring Boot/JPA] FetchType, Lazy Loading

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‘ ํ…Œ์ด๋ธ”์ด (์ผ๋Œ€๋‹ค ํ˜น์€ ๋‹ค๋Œ€์ผ) ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ๋งบ์„ ๋•Œ FK๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ๋‹ค. FK๋Š” ์—ฐ๊ฒฐ ๋œ ํ…Œ์ด๋ธ”์˜ PK์ด๋‹ค. ํ•˜์ง€๋งŒ JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ์—์„œ PK๊ฐ€ ์•„๋‹Œ PK๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” ํ…Œ์ด๋ธ” ์ž์ฒด๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค. ์›๋ž˜๋Š” ์ฝ”๋“œ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค๋ฉด, public class Member { // ๋‚˜๋จธ์ง€ ์ปฌ๋Ÿผ ์ƒ๋žต Long teamId; } public class Team { Long id; } JPA๋Š” ํ•ด๋‹น ๊ฐ์ฒด ์ž์ฒด๋กœ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. public class Member { @ManyToOne @JoinColumn(name = "team_id") Team team; } ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์ด ๋ณ€ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์‹ค์ œ member ํ…Œ์ด๋ธ”์—๋Š” ๋˜‘๊ฐ™์ด team_id ๋ผ๋Š” F..

[Java/Lombok] ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์—์„œ ์—ฌ๋Ÿฌ @Builder ์„ ์–ธ ์‹œ ์˜๋„์™€ ๋‹ค๋ฅธ ๊ฐ์ฒด ์ƒ์„ฑ

๋ฌธ์ œ ์ƒํ™ฉ @ToString @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Test implements Serializable { private Integer a; private Integer b; private String c; @Builder(builderMethodName = "bcBuilder") private Test(Integer b, String c) { this.a = 1004; this.b = b; this.c = c; } @Builder private Test(Integer a, Integer b, String c) { this.a = a; this.b = b; this.c = c; } @Builder(builderMe..

[JAVA] 7570, 2631 ์ค„ ์„ธ์šฐ๊ธฐ

๋‚œ์ด๋„ ๊ณจ๋“œ3, ๊ณจ๋“œ4 ์•Œ๊ณ ๋ฆฌ์ฆ˜: DP ๋‘ ๋ฌธ์ œ์˜ ๊ธฐ๋ณธ ์กฐ๊ฑด์€ ๊ฐ™๋‹ค. 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง„ ์•„์ด๋“ค์ด ๋ฌด์ž‘์œ„ ์ˆœ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์ผ๋ ฌ๋กœ ์„œ์žˆ๋‹ค. ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์˜ฎ๊ฒจ์ง€๋Š” ์•„์ด์˜ ์ตœ์†Œ ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ™๋‹ค. ๋‹ค๋งŒ ์•„์ด๋ฅผ ์˜ฎ๊ธฐ๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฅด๋‹ค. 7570๋ฒˆ: ์ค„ ์„œ์žˆ๋Š” ์–ด๋ฆฐ์ด ์ค‘ ํ•œ ๋ช…์„ ์„ ํƒํ•˜์—ฌ ์ œ์ผ ์•ž์ด๋‚˜ ์ œ์ผ ๋’ค๋กœ ๋ณด๋‚ธ๋‹ค. 2631๋ฒˆ: ์ค„ ์„œ์žˆ๋Š” ์–ด๋ฆฐ์ด ์ค‘ ํ•œ ๋ช…์„ ์„ ํƒํ•˜์—ฌ ๋‹ค๋ฅธ ์–ด๋ฆฐ์ด์™€ ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พผ๋‹ค. ์šฐ์„  2631๋ฒˆ๋ถ€ํ„ฐ ๋ณด๋ฉด, ์•„๋ฌด ์ž๋ฆฌ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฏธ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์„œ์žˆ๋Š” ์•„์ด๋“ค์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์•„์ด๋“ค์„ ์ˆœ์„œ์— ๋งž๊ฒŒ ์ด๋™์‹œํ‚ค๋ฉด ์ •๋‹ต์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ N=6์˜ ๋ฐฐ์—ด์ด ์žˆ๋‹ค๋ฉด [3, 5, 6] ํ˜น์€ [1, 2, 4]๊ฐ€ ์ด๋ฏธ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์„œ์žˆ๋Š” ๊ฐ€์žฅ ๊ธด ์ˆ˜์—ด์ด๋‹ค...

[JAVA] 2842 ์ง‘๋ฐฐ์› ํ•œ์ƒ๋•

๋‚œ์ด๋„ ํ”Œ๋ž˜ํ‹ฐ๋„˜5 ์•Œ๊ณ ๋ฆฌ์ฆ˜: ํˆฌ ํฌ์ธํ„ฐ, DFS/BFS ๋ฐฐ๋‹ฌํ•˜๋ฉด์„œ ๋ฐฉ๋ฌธํ•œ ์นธ ์ค‘ ๊ฐ€์žฅ ๋†’์€ ๊ณณ๊ณผ ๋‚ฎ์€ ๊ณณ์˜ ๊ณ ๋„ ์ฐจ์ด๋ฅผ ํ”ผ๋กœ๋„๋ผ๊ณ  ํ•˜์ž. ์ด๋•Œ, ๊ฐ€์žฅ ์ž‘์€ ํ”ผ๋กœ๋„๋กœ ๋ชจ๋“  ์ง‘์— ๋ฐฐ๋‹ฌ์„ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ด ๋ฌธ์ œ์—์„œ๋Š” ๊ฒฝ๋กœ ํ˜น์€ ๊ฑฐ๋ฆฌ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค. ๊ฐ€์žฅ ์ž‘์€ ํ”ผ๋กœ๋„๋กœ ์šฐ์ฒด๊ตญ๊ณผ ๋ชจ๋“  ์ง‘์„ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ์ž‘์€ ํ”ผ๋กœ๋„๋ฅผ ๋งŒ๋“œ๋Š” '๊ฐ€์žฅ ๋†’์€ ๊ณณ'๊ณผ '๊ฐ€์žฅ ๋‚ฎ์€ ๊ณณ'์„ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค. ์ตœ๋Œ€ ๊ณ ๋„์™€ ์ตœ์†Œ ๊ณ ๋„๋ฅผ ์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ง€๋„์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ํ”ผ๋กœ๋„๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉฐ ์ตœ๋Œ€ ๊ณ ๋„์™€ ์ตœ์†Œ ๊ณ ๋„๋ฅผ ์ •ํ•œ ํ›„, ํ•ด๋‹น ๋ฒ”์œ„๋กœ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋Š” ์ง€ ๊ฒ€์‚ฌํ•˜๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์™„์ „ ํƒ์ƒ‰์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด ๊ตณ์ด ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•˜์ง€ ์•Š์•„๋„ ์‹œ๊ฐ„์ด..

[JAVA] Union-Find ์•Œ๊ณ ๋ฆฌ์ฆ˜

Union-Find ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณตํ†ต ์›์†Œ๊ฐ€ ์—†๋Š” ๋‘ ์ง‘ํ•ฉ์„ ์„œ๋กœ์†Œ ์ง‘ํ•ฉ์ด๋ผ๊ณ  ํ•œ๋‹ค. Union-Find ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋งŽ์€ ์„œ๋กœ์†Œ ๋ถ€๋ถ„ ์ง‘ํ•ฉ๋“ค๋กœ ๋‚˜๋ˆ ์ง„ ์›์†Œ๋“ค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ทธ๋ž˜ํ”„ ํ˜น์€ ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๋‘ ๋…ธ๋“œ๊ฐ€ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„์— ์†ํ•ด ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์„œ๋กœ์†Œ ์ง‘ํ•ฉ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ธ ๊ฐ€์ง€ ์—ฐ์‚ฐ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. 1. Make Set ์—ฐ์‚ฐ ๊ฐ ์›์†Œ์— ๋Œ€ํ•ด ์ง‘ํ•ฉ์„ ๋งŒ๋“œ๋Š” ์—ฐ์‚ฐ์œผ๋กœ, ์ž๊ธฐ ์ž์‹ ์„ ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋งŒ๋“ ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ ์ง‘ํ•ฉ์˜ ๋Œ€ํ‘œ์ž๋Š” ์›์†Œ ์ž์‹ ์ด ๋œ๋‹ค. int[] parents = new int[N]; private static int makeSet() { for(int idx = 0; idx < parents.length; idx++) { parents[idx] = i..

[JAVA] 20442 ใ…‹ใ…‹๋ฃจใ…‹ใ…‹

๋‚œ์ด๋„ ๊ณจ๋“œ2 ์•Œ๊ณ ๋ฆฌ์ฆ˜: ํˆฌ ํฌ์ธํ„ฐ ๋ฌธ์ œ ํ’€์ด๋ฅผ ์œ„ํ•ด ํŒŒ์•…ํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ์ ์€ ๋‘ ๊ฐ€์ง€์ด๋‹ค. ์ž…๋ ฅ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 3,000,000์ด๋‹ค. ใ…‹ใ…‹๋ฃจใ…‹ใ…‹ ๋ฌธ์ž์—ด์€ ์ขŒ์šฐ๋Œ€์นญ์ด๋‹ค. ์šฐ์„  ์ž…๋ ฅ์ด ํฌ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ€ํ•œ O(N)์œผ๋กœ ์—ฐ์‚ฐ์„ ํ•ด์•ผํ•œ๋‹ค. ์ฆ‰ ๋ฌธ์ž์—ด์˜ ๊ฐ ์›์†Œ์— ๋Œ€ํ•ด ํ•œ๋ฒˆ๋งŒ ํƒ์ƒ‰ํ•˜๊ณ  ์ง€๋‚˜๊ฐ€๋Š” ํ’€์ด๋ฅผ ๊ณ ์•ˆํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋‘๋ฒˆ์งธ๋กœ ใ…‹ใ…‹๋ฃจใ…‹ใ…‹ ๋ฌธ์ž์—ด์€ R์„ ์ค‘์‹ฌ์œผ๋กœ ๊ฐ™์€ ๊ฐœ์ˆ˜์˜ K๊ฐ€ ์–‘ ์ชฝ์— ๋ถ™์€ ์ขŒ์šฐ ๋Œ€์นญ์ด๋‹ค. ์ด ๋‘ ๊ฐ€์ง€ ํŠน์ง•์„ ํ†ตํ•ด ํˆฌ ํฌ์ธํ„ฐ๋ฅผ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํˆฌ ํฌ์ธํ„ฐ๊นŒ์ง€ ๋– ์˜ฌ๋ ธ์œผ๋ฉด, ์ด์ œ ๊ฐ ํฌ์ธํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์›€์ง์—ฌ์•ผ ํ•  ์ง€ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค. ใ…‹ใ…‹๋ฃจใ…‹ใ…‹ ๋ฌธ์ž์—ด์€ K ์‚ฌ์ด์— R์ด ์žˆ๋Š” ๋ฌธ์ž์—ด์ด๋‹ค. (๋ฌผ๋ก  K๋Š” ์—†์„ ์ˆ˜ ์žˆ์Œ) ๋”ฐ๋ผ์„œ ํˆฌ ํฌ์ธํ„ฐ ๋ฐ”๊นฅ์˜ K์™€ ์•ˆ ์ชฝ์˜ R๋กœ ใ…‹ใ…‹๋ฃจใ…‹ใ…‹ ๋ฌธ์ž์—ด์„ ์ƒ..

[SpringBoot/JPA] org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ํ…Œ์ด๋ธ” ์ด๋ฆ„" not found (this database is empty)

๋ฌธ์ œ ์ƒํ™ฉ - ์—ฐ๊ฒฐ ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ•ด๋‹น ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•จ - ํ•˜์ง€๋งŒ ์Šคํ”„๋ง๋ถ€ํŠธ ์‹คํ–‰ ์‹œ ์ œ๋ชฉ๊ณผ ๊ฐ™์ด ํ•ด๋‹น ํ…Œ์ด๋ธ”์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์—๋Ÿฌ๋ฅผ ๋„์› ๋‹ค ํ•ด๊ฒฐ ๊ณผ์ • ๊ตฌ๊ธ€๋ง ๊ฒฐ๊ณผ application.yaml์—์„œ spring.jpa.defer-datasource-initialization์„ true๋กœ ์„ค์ •ํ•œ๋‹ค (์Šคํ”„๋ง๋ถ€ํŠธ 2.5 ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ ๋ฌธ์ œ) ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์ด ์˜ˆ์•ฝ์–ด(ex. user)์ด๊ฑฐ๋‚˜ ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ๋‹ค๋ฅธ์ง€ ํ™•์ธํ•œ๋‹ค ๋‘ ๊ฐ€์ง€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์ง€๋งŒ ์†Œ์šฉ์ด ์—†์—ˆ๋‹ค. ์ด๋ฏธ 1, 2๋ฒˆ์ด ๋ชจ๋‘ ํ•ด๊ฒฐ ๋œ ์ƒํ™ฉ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฒฐ๊ตญ ๊ต์ˆ˜๋‹˜ ์ฐฌ์Šค๋ฅผ ์จ์„œ ์›์ธ์„ ์•Œ์•„๋ƒˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ์žˆ๋˜ @DataJpaTest ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. ํ•ด๋‹น ์–ด๋…ธํ…Œ์ด์…˜์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ๊ตฌ..

[MySQL] Access denied for user '์œ ์ € ์•„์ด๋””'@'localhost' (using password: YES): ๋กœ๊ทธ์ธ ์‹คํŒจ ์—๋Ÿฌ

๋ฌธ์ œ ์ƒํ™ฉ - mysql 8.x ๋ฒ„์ „ ์‚ฌ์šฉ ์ค‘ - ํ„ฐ๋ฏธ๋„์—์„œ mysql -u '์œ ์ € ์•„์ด๋””' -p๋กœ ๋กœ๊ทธ์ธ ํ•  ์‹œ ์„ฑ๊ณตํ•จ - ํ•ด๋‹น ์œ ์ €์—๊ฒŒ ๊ถŒํ•œ ๋ถ€์—ฌ๋„ ์™„๋ฃŒํ•จ - ์ธํ…”๋ฆฌ์ œ์ด Database ์„ค์ •์—์„œ๋„ ๋กœ๊ทธ์ธ์ด ์„ฑ๊ณต๋˜์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์—ฐ๊ฒฐ๋จ - ๊ทธ๋Ÿฐ๋ฐ ๋˜‘๊ฐ™์€ ์„ค์ •์œผ๋กœ ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ œ๋ชฉ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค... ํ•ด๊ฒฐ ๊ณผ์ • ์ฒ˜์Œ์—๋Š” ๋กœ๊ทธ๋ฅผ ๋ณด๊ณ ๋„ ๋กœ๊ทธ์ธ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฑฐ๋ผ๋Š” ์ƒ๊ฐ์„ ๋ชปํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ์—๋Ÿฌ ๋กœ๊ทธ๋ฅผ ๊ตฌ๊ธ€๋งํ•˜๋‹ค๊ฐ€ ์šฐ์—ฐํžˆ ์ด ๊ธ€์„ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‚˜์™€ ๋ฌธ์ œ ์ƒํ™ฉ์ด ๋˜‘๊ฐ™์•˜๋Š”๋ฐ, ์–ด์ด์—†๊ฒŒ๋„ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋‹ˆ๊นŒ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋งˆ์นจ ๋‚ด๊ฐ€ ์„ค์ •ํ•ด ๋†“์€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋„ ๋„ค์ž๋ฆฌ ์ˆ˜์˜ ๊ฐ„๋‹จํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜€๋‹ค. ๊ทธ๋ž˜์„œ ์˜์–ด๋ฅผ ์„ž์–ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ˆ˜์ •ํ–ˆ๋”๋‹ˆ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค. ์ด๊ฒŒ ๋ฌด์Šจ... MySQL 8.0 ๊ธฐ์ค€..

Database/MySQL 2023.02.03

[JAVA] 1202 ๋ณด์„ ๋„๋‘‘

๋‚œ์ด๋„ ๊ณจ๋“œ2 ์ฝ”๋“œ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.PriorityQueue; import java.util.StringTokenizer; public class Main { private static Comparator comparator = new Comparator() { @Override public int compare(long[] x, long[]..