๐ORM:JPA
๊ฐ ํ์
์์ ๊ฐ ํ์
์ immutable ํด์ผ ํจ ๊ฐ ํ์
์ setter๋ก ์์ ํ๋ฉด ์๋จ update๋ฌธ์ด ๋๊ฐ์ง๋ง side effect๋ฅผ ์ผ์ผํฌ ์ ์์ Member findMember = em.find(Member.class,member.getId()); // ๊ฐํ์
Address์ homeCity ๋ฅผ newCity๋ก ๋ฐ๊พธ๊ณ ์ถ์ findMember.getHomeAddress().setCity("newCity"); // ์ด๋ ๊ฒ ํ๋ฉด ์๋จ ์๋์ ๊ฐ์ด ์๋ก์ด Address๋ก ๊ฐ์๋ผ์์ผ ํ๋ค // ๊ฐํ์
Address์ homeCity ๋ฅผ newCity๋ก ๋ฐ๊พธ๊ณ ์ถ์ Address a = findMember.getHomeAddress(); findMember.setHomeAddress(new Addres..
๐ORM:JPA
์ฐ๊ด๋ ์ํฐํฐ๊ฐ ํ๋๋ฉด ์ฆ์ ๋ก๋ฉ ์ปฌ๋ ์
์ด๋ฉด ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉ ์ด๋
ธํ
์ด์
default @ManyToOne, @OneToOne ์ฆ์ ๋ก๋ฉ(FetchType.EAGER) @OneToMany, @ManyToMany ์ง์ฐ ๋ก๋ฉ(FetchType.LAZY) ManyToMany๋ ์ฐ์ง ๋ง์ ์ค๋ฌด์์ ์ง์ฐ ๋ก๋ฉ๋ง ์ฌ์ฉํ์ ์ฆ์ ๋ก๋ฉ์ ํ๋ฉด ์์์น ๋ชปํ SQL์ด ๋ฐ์ ์ฆ์ ๋ก๋ฉ์ JPQL์์ N+1 ๋ฌธ์ ๋ฅผ ์ผ์ผํจ๋ค. @ManyToOne, @OneToOne์ ๊ธฐ๋ณธ์ด ์ฆ์ ๋ก๋ฉ ๐ LAZY๋ก ์ค์ ๋ชจ๋ ์ฐ๊ด๊ด๊ณ์ ์ง์ฐ ๋ก๋ฉ์ ์ค์ ํ ๋ค JPQL fetch์กฐ์ธ์ด๋, ์ํฐํฐ ๊ทธ๋ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ ์ฆ์๋ก๋ฉ์ ์์ํ์ง ๋ชปํ ์ฟผ๋ฆฌ๊ฐ ๋๊ฐ๋ค
๐๋ฐฑ์๋ : BackEnd
Spring์ด๋? ์ ํํ ํํ์ผ๋ก๋ '์คํ๋ง ํ๋ ์์ํฌ(Spring Framework) ์์กด์ฑ ์ฃผ์
(DI) ์ ์ด์ญ์ (IOC) ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ(AOP) ์ด ๊ฐ์ฅ ์ค์ํ ์์ ์ ์์๋ค์ ํตํด ๋์จํ ๊ฒฐํฉ์ ๋ฌ์ฑํ ์ ์์ ์์ ๊ฐ์ด ๋์จํ ๊ฒฐํฉ์ผ๋ก ๊ฐ๋ฐํ ์ดํ๋ฆฌ์ผ์ด์
์ ๋จ์ ํ
์คํธ๋ฅผ ์ํํ๊ธฐ ์ฉ์ดํจ ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ(AOP)๋? AOP๋ ์ฝ๊ฒ ๋งํด, OOP(๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ)์ ๋ณด์ํ๋ ์๋จ์ผ๋ก, ์ฌ๋ฌ ๊ณณ์ ์ฐ์ด๋ ๊ณตํต ๊ธฐ๋ฅ์ ๋ชจ๋ํํ์ฌ ํ์ํ ๊ณณ์ ์ฐ๊ฒฐํจ์ผ๋ก์จ ์ ์ง๋ณด์ ๋๋ ์ฌ์ฌ์ฉ์ ์ฉ์ดํ๋๋ก ํ๋ ๊ฒ์ ์๋ฏธ AOP๋ฅผ ํตํด ๊ธฐ์กด ํ๋ก์ ํธ์ ๋ค์ํ ๊ธฐ๋ฅ์ ๋ก์ง ์์ ์์ด ์ถ๊ฐํ ์ ์์ ์ด๋ฐ ๊ฐ๋ฐ ๋ฐฉ์์ ํตํด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํจ SpringBoot๊ฐ ๋์ค๊ฒ ๋ ์ด์ ์คํ๋ง์ ๋ค์ํ ๊ธฐ๋ฅ์..
๐์ฝ๋ฉํ
์คํธ:CodingTest
์ฌ์ฉ์ธ์ด : PYTHON ํ์ด 1. ํ ์ฐ์ ๋ฐฉํฅ์ผ๋ก ํ์์ ์งํํ๋ค 0์ธ ๊ณณ์ ๋ง๋๋ฉด BFS๋ฅผ ์ํ(์ฐ์์ ์ผ๋ก ํด๋ฆญ)ํ๋ฉฐ ์ ๋ต(ans)๋ฅผ 1์ฆ๊ฐ ์ด๋ 0์ผ๋ก ์ธํด ์ฐ์์ ์ผ๋ก ํด๋ฆญ๋ ๊ณณ์ -๋ก ํ์ 2. ํ ์ฐ์ ๋ฐฉํฅ์ผ๋ก ๋ค์ ํ์ํ๋ฉฐ ์ฐ์์ ์ผ๋ก ํด๋ฆญ๋์ง ์์ ๊ณณ์ ๊ฐฏ์๋งํผ ์ ๋ต(ans)์ ์ถ๊ฐ ์ฝ๋ import sys from collections import deque input = sys.stdin.readline # SWEA ํํํํ ์ง๋ขฐ์ฐพ๊ธฐ # 1. ์ ์ฒด๋ฅผ ํ์ํ๋ค 0์ ๋ง๋๋ฉด BFS ์ํ (๋ฐฉ๋ฌธ์ฒดํฌ), cnt += 1 # 2. ์ฒดํฌ ๋์ง ์์ ์นธ ์ธ๊ธฐ def click(r, c): # ํด๋ฆญ์ ์ํํ๊ณ (์ค๋ณต ํด๋ฆญ์ ์ํํ์ง ์์), 0์ด๋ฉด True๋ฅผ ๋ฆฌํดํ๋ ํจ์ if arr[r][c] == '..
๐์ฝ๋ฉํ
์คํธ:CodingTest
swea 3304 ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด ์ฌ์ฉ์ธ์ด : PYTHON ํ์ด ์ฐ์ ์ต์ ํด(์ต๋๊ฐ)์ ๊ตฌํ๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํ์ฌ ํ ์ ์๋ค. ์ํ์(์ ํ์)์ ์ธ์ธ๋๋ "์ต์ ํด์ ์ผ๋ถ๋ถ์ด ๊ทธ ๋ถ๋ถ์ ์ต์ ํด" ๋ฅผ ์๊ฐํด์ผ ํ๋ค. ์ด ๋ฌธ์ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ ๋ฌธ์์ด์ ๋ง์ง๋ง ๋ฌธ์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ์ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํ์ฌ ์ํ์์ ์ธ์์ผ ํ๋ค. (DP(i,j)์์ i์ j๋ ๋ฌธ์์ด X์ Y์ 1...i, 1...j ๋ฒ์งธ๊น์ง์ ๋ฌธ์์ด) (1) ๋ ๋ฌธ์์ด์ ๋ง์ง๋ง ๋ฌธ์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ์๋ฅผ๋ค์ด CDABE์ CDE๋ผ๊ณ ๊ฐ์ ํด๋ณด๋ฉด ๋ง์ง๋ง ๋ฌธ์ E๊ฐ ๊ฐ๋ค. E๋ ์ต์ฅ ๊ณตํต ๋ถ๋ถ์์ด์ ๋ฐ๋์ ํฌํจ๋๋ค. ๋ฐ๋ผ์ ์ต์ฅ ๊ณตํต ๋ถ๋ถ์์ด์ ๊ธธ์ด๋ ๋ ๋ฌธ์์ด์ ๋ง์ง๋ง ๋ฌธ์ E๋ฅผ ์ ๊ฑฐํ ํ ์ฐพ์ ์ต์ฅ ๊ณตํต ๋ถ๋ถ์์ด์ ๊ธธ์ด +..
๐์ฝ๋ฉํ
์คํธ:CodingTest
swea 3307 ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด ์ฌ์ฉ์ธ์ด : PYTHON ํ์ด ๋ฐฑ์ค์์ ํ ๋ฒ ํ์ด๋ฅผ ํ๋ ๋ฌธ์ ์๋ค dp๋ฅผ ์ฌ์ฉํด์ ํ์ด์ผ ํ๋๋ฐ ์ ํ์์ ์ด๋ป๊ฒ ์ธ์์ผ ํ ์ง ์ ์๊ฐ์ด ๋์ง ์์๋ค. ์ ์ ํ์์ ์ธ์ฐ์ง ๋ชปํ๋์ง ํ์ด๋ฅผ ๋ณด๊ณ ์์๋ค. ์ด ๋ฌธ์ ๋ 0~n๊น์ง ์ฐจ๋ก๋๋ก dp๋ฆฌ์คํธ๋ฅผ ์ฑ์ด๋ค dp[n-1]์ด ์ ๋ต์ด ๋๋๊ฒ์ด ์๋ max(dp)๊ฐ ์ ๋ต์ด๊ธฐ ๋๋ฌธ์ด์๋ค. dp[i] ๋ l[i] (์
๋ ฅ์ผ๋ก ๋ฐ๋ ์์ด) ๋ฅผ ์ฌ์ฉํ์ ๋ ์์ฑ๋ ์ ์๋ ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด์ ๊ธธ์ด์ด๋ค 0
๐์ฝ๋ฉํ
์คํธ:CodingTest
swea 4615 ์ฌ๋ฏธ์๋ ์ค์
๋ก ๊ฒ์ ์ฌ์ฉ์ธ์ด : PYTHON ํ์ด ๋ฐฉํฅ๋ฒกํฐ๋ฅผ ์ด์ฉํ์ฌ ๋ชจ๋ ๋ฐฉํฅ์ ๋ฐฑํธ๋ํน ํ๋ฉฐ ์กฐ๊ฑด์ ๋ถํฉํ๋ฉด ๋์ ์์์ ๋ณ๊ฒฝํ๋ค. ( ๋ฐฑํธ๋ํน์ด ๋ง๋๊ฑด๊ฐ..? ) ์กฐ๊ฑด์ ๋ถํฉํ๋ค๋ ๋ง์ WBBBW ํน์ BWWWWWB์ ๊ฐ์ ๊ฒฝ์ฐ์ด๋ค. ๋ฐฑํธ๋ํน ๋ฐฉํฅ ๋ฒกํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฐฉํฅ ํ ์นธ ์์ ์์์ด ํ์ฌ ์์๊ณผ ๋ค๋ฅด๋ฉด flag๋ณ์๋ฅผ 1๋ก ๋ฐ๊พธ๊ณ ํ ์นธ ์์ ์์์ ํ์ฌ ์์์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๋ฐฑํธ๋ํน ํจ์๋ฅผ ์ํํ๋ค. ์ด๋ ๋ณ๊ฒฝํ๊ธฐ ์ ์์์ ๋ณ์์ ์ ์ฅํด๋์ด์ผ ํ๋ค. ๋ง์ฝ ์กฐ๊ฑด์ ๋ถํฉํ์ง ์๋๋ค๋ฉด ์์๋ณต๊ตฌ ํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค. flag๋ณ์ : 2 1 1 1 2 ์ ๊ฐ์ด ํ ์ซ์๊ฐ ๋ค๋ฅธ ์ซ์๋ฅผ ๊ฐ์ธ๋์ง ํ์ธํ๊ธฐ ์ํด ํ์ํ ๋ณ์์ด๋ค. ์ฌ๊ทํจ์๋ก ํธ์ถํ check()ํจ์๊ฐ False๋ฅผ ๋ฆฌํดํ๋ค๋ฉด ์กฐ..
๐์ฝ๋ฉํ
์คํธ:CodingTest
swea 1216 ํ๋ฌธ2 ์ฌ์ฉ์ธ์ด : PYTHON ํ์ด ์๊ฐ๋ณต์ก๋๋ฅผ ์ค์ด๊ธฐ ์ํด ๊ธธ์ด๊ฐ 1์ธ ๋ฌธ์ฅ๋ถํฐ ์ค๋ฆ์ฐจ์์ผ๋ก 100๊น์ง ๊ฒ์ฌํ๋ ๊ฒ์ด ์๋ 100๋ถํฐ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๊ฒ์ฌ๋ฅผ ํด์ผํ๋ค. ๋ด๋ฆผ์ฐจ์์ผ๋ก ๊ฒ์ฌ๋ฅผ ์ํํ๋ค๊ฐ ๊ทธ ๋ฌธ์ฅ์ด ํ๋ฌธ์ด ๋ง๋ค๋ฉด ๊ฐ์ฅ ๊ธด ํ๋ฌธ์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค. ํ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ฅ ๊ธด ํ๋ฌธ์ ๊ธธ์ด์ ์ด ๋ฐฉํฅ์ผ๋ก ๊ฐ์ฅ ๊ธด ํ๋ฌธ์ ๊ธธ์ด ์ค ๋ ํฐ ๊ฐ์ด ์ ๋ต์ด ๋๋ค. ์ด ์ธ ๊ฐ์ ํจ์๋ฅผ ์ด์ฉํ์๋ค. ํ๋ฌธ์ธ์ง ํ์ธํ๋ checkํจ์ ํ ๋ฐฉํฅ์ผ๋ก ํ์ํ๋ find_rowํจ์ ์ด ๋ฐฉํฅ์ผ๋ก ํ์ํ๋ find_colํจ์ (ํจ์ ์์์ find_row๋ฅผ ํธ์ถํ๊ณ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ ๋ค ์ต์ข
์ ๋ต์ returnํจ) ์ฝ๋ def check(st): for i in range(len(st)//2): if st[i]!=st..