[Spring] CollectionUtils ํ™œ์šฉํ•œ null, empty ์ฒดํฌ
ยท
Backend/Spring Boot
์ž๋ฐ”์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ ์–ธ์ œ๋‚˜ ์กฐ์‹ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ NullPointerException์ด๋‹ค.์‹ค์ œ๋กœ ์ตœ๊ทผ ์‹ค๋ฌด์—์„œ null ์ฒดํฌ๋ฅผ ๊ผผ๊ผผํžˆ ์•ˆํ–ˆ๋‹ค๊ฐ€ ์šด์˜์—์„œ ์—๋Ÿฌ๊ฐ€ ์ฐํžˆ๋Š” ์‚ฌํƒœ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๐Ÿ˜ฑ ๊ทธ๋ฆฌ๊ณ  List์˜ null ์ธ์ง€์™€ ๊ฐ์ฒด๊ฐ€ ๋น„์—ˆ๋Š”์ง€๋ฅผ ๋ชจ๋‘ ํ™•์ธํ•ด์ค˜์•ผ ํ•  ์ผ์ด ์ƒ๊ฒผ๋Š”๋ฐ, Spring์—์„œ ์ œ๊ณตํ•˜๋Š” CollectionUtils์„ ์“ฐ๋ฉด ํ•œ ๋ฒˆ์— ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค. 1. null vs empty์šฐ์„  null๊ณผ empty์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด์ž.์•„๋ž˜ ๊ทธ๋ฆผ์€ null๊ณผ empty์˜ ์ฐจ์ด๋ฅผ ์•„์ฃผ ์ž˜ ์„ค๋ช…ํ•ด์ฃผ๋Š” ์งค์ด๋‹ค. ์™ผ์ชฝ ์นธ์„ ๋ณด๋ฉด ํœด์ง€์˜ ์ฃผ์š” ๋‚ด์šฉ๋ฌผ์ธ ํฐ ๋ถ€๋ถ„(๋ฐ์ดํ„ฐ)๊ฐ€ ์—†๊ณ , ํœด์ง€๋ฅผ ๋‹ด๊ณ  ์žˆ๋˜ ํœด์ง€์‹ฌ(๊ฐ์ฒด)๋Š” ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.์˜ค๋ฅธ..
[Spring/JUnit] Mock ๊ฐ์ฒด ์„ค์ • ๋ฌธ์ œ : java.lang.AssertionError: Expecting actual not to be null
ยท
Backend/Spring Boot
โ—๏ธ์—๋Ÿฌ ๋ฉ”์‹œ์ง€java.lang.AssertionError: Expecting actual not to be null     ๐Ÿ’ป ๊ฐœ๋ฐœ ํ™˜๊ฒฝFramework : Spring Boot `3.2.3`DB : MySQL(๋กœ์ปฌ), H2(ํ…Œ์ŠคํŠธ)Library : JPA, QueryDSL `5.0.0`Test : JUnit     ๐Ÿ”Ž ์›์ธSpring์—์„œ Junit์œผ๋กœ Service ๋‹จ์˜ ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š”๋ฐ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค.๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก ๋ฉ”์†Œ๋“œ๋Š” `save()`๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , ์ƒˆ๋กœ ๋“ฑ๋ก๋œ ๊ฒŒ์‹œ๊ธ€์˜ `id`๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด Mock ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด `save()`๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ–ˆ๊ณ , `getId()`๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด `id`๋กœ 1L์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ–ˆ์„..
[Java] Lombok ๋กฌ๋ณต์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ
ยท
Backend/Java
Java/Spring์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ Lombok ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค.Lombok ๋•๋ถ„์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ํŽธํ–ˆ์ง€๋งŒ, ๋ฌด์ง€์„ฑ์œผ๋กœ ๋ง‰ ๊ฐ–๋‹ค์“ฐ๋‹ค๊ฐ€ ๋‚ญํŒจ๋ฅผ ๋ณธ ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ๋‹ค.(toString ์ˆœํ™˜ ์ฐธ์กฐ, ์ƒ์„ฑ์ž ์ˆœ์„œ ์•ˆ๋งž์Œ...)  Lombok์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ณด๊ณ , ๋‹จ์ ๊ณผ ์ฃผ์˜์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค!           Lombok์€ ์ธ๋„๋„ค์‹œ์•„์— ์žˆ๋Š” Lombok ์„ฌ์—์„œ ์ด๋ฆ„์„ ๋”ฐ์„œ ๋งŒ๋“ค์—ˆ๋‹ค๋Š”๋ฐ, ์™œ ์•„์ด์ฝ˜์€ Red chilli์ผ๊นŒ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.Project Lombok์˜ ์Šฌ๋กœ๊ฑด์„ ๋ณด๋ฉด 'Spice up your java(์ž๋ฐ”์— ๋ง›์„ ๋”ํ•˜๋‹ค)'์ธ๋ฐ, 'Spice(ํ–ฅ์‹ ๋ฃŒ)' ๋•Œ๋ฌธ์— Red chilli ์•„์ด์ฝ˜์„ ์“ฐ๋Š” ๊ฒƒ ๊ฐ™๋‹ค! (์ถ”์ธก)      Lombok ์ด๋ž€? Lombok์€ ์ž๋™์ ์œผ๋กœ ..
๋ฐฑ์ค€ 18513๋ฒˆ : ์ƒ˜ํ„ฐ
ยท
Algorithm/๋ฐฑ์ค€
https://www.acmicpc.net/problem/18513 18513๋ฒˆ: ์ƒ˜ํ„ฐ ์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N๊ณผ K๊ฐ€ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N, K ≤ 100,000) ๋‘˜์งธ ์ค„์— N๊ฐœ์˜ ์ƒ˜ํ„ฐ์˜ ์œ„์น˜๊ฐ€ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ •์ˆ˜ ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ง„๋‹ค. (-100,000,000 ≤ ์ƒ˜ํ„ฐ์˜ ์œ„์น˜ ≤ www.acmicpc.net ๋ฌธ์ œ ์ผ์ง์„  ์ƒ์˜ ๊ณต๊ฐ„์— N๊ฐœ์˜ ์ƒ˜ํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, K์ฑ„์˜ ์ง‘์„ ์ง“๊ณ ์ž ํ•œ๋‹ค. ๋ชจ๋“  ์ƒ˜ํ„ฐ ๋ฐ ์ง‘์ด ์กด์žฌํ•˜๋Š” ์œ„์น˜๋Š” ํ•ญ์ƒ ์ •์ˆ˜ ํ˜•ํƒœ์ด๋‹ค. ์ด๋•Œ ์ผ์ง์„  ์ƒ์˜ ๊ณต๊ฐ„์—์„œ N๊ฐœ์˜ ์ƒ˜ํ„ฐ ๋ฐ K์ฑ„์˜ ์ง‘๋“ค์€ ๋ชจ๋‘ ์„œ๋กœ ๋‹ค๋ฅธ ์œ„์น˜์— ์กด์žฌํ•œ๋‹ค. K์ฑ„์˜ ์ง‘์„ ์ง€์„ ๋•Œ, ๊ฐ€๋Šฅํ•˜๋ฉด ์ƒ˜ํ„ฐ์˜ ์ฃผ๋ณ€์— ์ง‘๋“ค์„ ์ง€์–ด์„œ K์ฑ„์˜ ๋ชจ๋“  ์ง‘์— ๋Œ€ํ•œ ๋ถˆํ–‰๋„์˜ ํ•ฉ์ด ์ตœ์†Œ๊ฐ€ ๋˜๋„๋ก ์ง“๊ณ ์ž ํ•œ๋‹ค. ๋ถˆํ–‰๋„๋ž€, ๊ฐ€์žฅ ..
๋ฐฑ์ค€ 1937๋ฒˆ : ์š•์‹ฌ์Ÿ์ด ํŒ๋‹ค
ยท
Algorithm/๋ฐฑ์ค€
https://www.acmicpc.net/problem/1937 1937๋ฒˆ: ์š•์‹ฌ์Ÿ์ด ํŒ๋‹ค n × n์˜ ํฌ๊ธฐ์˜ ๋Œ€๋‚˜๋ฌด ์ˆฒ์ด ์žˆ๋‹ค. ์š•์‹ฌ์Ÿ์ด ํŒ๋‹ค๋Š” ์–ด๋–ค ์ง€์—ญ์—์„œ ๋Œ€๋‚˜๋ฌด๋ฅผ ๋จน๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ณณ์˜ ๋Œ€๋‚˜๋ฌด๋ฅผ ๋‹ค ๋จน์–ด ์น˜์šฐ๋ฉด ์ƒ, ํ•˜, ์ขŒ, ์šฐ ์ค‘ ํ•œ ๊ณณ์œผ๋กœ ์ด๋™์„ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋˜ ๊ทธ๊ณณ์— www.acmicpc.net ๋ฌธ์ œ n × n์˜ ํฌ๊ธฐ์˜ ๋Œ€๋‚˜๋ฌด ์ˆฒ์ด ์žˆ๋‹ค. ํŒ๋‹ค๋Š” ์–ด๋–ค ์ง€์—ญ์—์„œ ๋Œ€๋‚˜๋ฌด๋ฅผ ๋จน๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ณณ์˜ ๋Œ€๋‚˜๋ฌด๋ฅผ ๋‹ค ๋จน์–ด ์น˜์šฐ๋ฉด ์ƒ, ํ•˜, ์ขŒ, ์šฐ ์ค‘ ํ•œ ๊ณณ์œผ๋กœ ์ด๋™์„ ํ•œ๋‹ค. ๊ทธ ์˜ฎ๊ธด ์ง€์—ญ์— ๊ทธ ์ „ ์ง€์—ญ๋ณด๋‹ค ๋Œ€๋‚˜๋ฌด๊ฐ€ ๋งŽ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์–ด๋–ค ์ง€์ ์— ์ฒ˜์Œ์— ํ’€์–ด ๋†“์•„์•ผ ํ•˜๊ณ , ์–ด๋–ค ๊ณณ์œผ๋กœ ์ด๋™์„ ์‹œ์ผœ์•ผ ํŒ๋‹ค๊ฐ€ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์นธ์„ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณ ๋ฏผ์— ๋น ์ ธ ์žˆ๋‹ค. ํŒ๋‹ค๊ฐ€ ์ด๋™ํ•  ์ˆ˜ ..
๋ฐฑ์ค€ 15486๋ฒˆ : ํ‡ด์‚ฌ2
ยท
Algorithm/๋ฐฑ์ค€
https://www.acmicpc.net/problem/15486 15486๋ฒˆ: ํ‡ด์‚ฌ 2 ์ฒซ์งธ ์ค„์— N (1 ≤ N ≤ 1,500,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— Ti์™€ Pi๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด์„œ ์ฃผ์–ด์ง€๋ฉฐ, 1์ผ๋ถ€ํ„ฐ N์ผ๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,000) www.acmicpc.net ๋ฌธ์ œ ์˜ค๋Š˜๋ถ€ํ„ฐ N+1์ผ์งธ ๋˜๋Š” ๋‚  ํ‡ด์‚ฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ๋‚จ์€ N์ผ ๋™์•ˆ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์ƒ๋‹ด์„ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๊ฐ๊ฐ์˜ ์ƒ๋‹ด์€ ์ƒ๋‹ด์„ ์™„๋ฃŒํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ๊ธฐ๊ฐ„ Ti์™€ ์ƒ๋‹ด์„ ํ–ˆ์„ ๋•Œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ธˆ์•ก Pi๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ƒ๋‹ด์„ ์ ์ ˆํžˆ ํ–ˆ์„ ๋•Œ, ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ˆ˜์ต ๊ตฌํ•˜๊ธฐ ์ œํ•œ์‚ฌํ•ญ N (1 ≤ N ≤ 1,500,000) 1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,00..
giraffe_
'Java' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก