728x90 ๋ฐ์ํ [Algorithm] LRU(Least Recently Used) Cache ์๊ณ ๋ฆฌ์ฆ์ด๋? (feat. ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์ค๋์ ํจ๊ณผ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ํ์ด์ง ๊ต์ฒด ๊ธฐ๋ฒ ์ค ํ๋์ธ LRU Cache ์๊ณ ๋ฆฌ์ฆ์ ๋ํด์ ๋ค๋ค ๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Least Recently Used Cache Algorithm์ด๋? LRU ์๊ณ ๋ฆฌ์ฆ์ FIFO, LFU, MFU ๋ฑ๊ณผ ๊ฐ์ ํ์ด์ง ๊ต์ฒด ๊ธฐ๋ฒ ์ค ํ๋์ธ๋ฐ์. (ํ์ด์ง ๊ต์ฒด ๊ธฐ๋ฒ์ ๋ํ ๊ฒ์ ์ฌ๊ธฐ ์์ ํ์ธํด ์ฃผ์ธ์ ใ ) ๊ทธ ์ค์์๋ ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉํ์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. LRU Design LRU Cache ์๊ณ ๋ฆฌ์ฆ์ ์ค๋ซ๋์ ์ฌ์ฉํ์ง ์์ ํ์ด์ง๋ฅผ ์ญ์ ํด ์ฃผ๊ณ ์๋กญ๊ฒ ์ฌ์ฉ๋ ํ์ด์ง๋ฅผ ์ถ๊ฐํด ์ค์ผ ํฉ๋๋ค. ์ญ์ ์ ์ถ๊ฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๋น ๋ฅด๊ฒ ํ๋ ๊ฒ์ด ํต์ฌ์ธ๋ฐ์. ์ฆ, O(1) ์๊ฐ ๋ณต์ก๋๋ก ํด๋น ๊ธฐ๋ฅ์ ์ํํด์ผ .. 2022. 9. 22. [Algorithm] Floyd's Cycle Detection์ด๋? (feat. Linked List) ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์์ LeetCode์์ Linked List์ ์ฌ์ดํด์ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ slow, fast ํฌ์ธํฐ๋ฅผ ๋ง์ด ์ด์ฉํ๋๋ผ๊ตฌ์. ํด๋น ํ์ด๊ฐ ์ดํด๊ฐ ์๋ผ์ ์ฐพ์ ๋ณด๋ ๊ด๋ จ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์์๊ณ , ๊ทธ๊ฒ์ด Floyd's Cycle Detection ์ด์์ต๋๋ค. ๊ทธ๋์ ์ค๋์ ๋งํฌ๋ ๋ฆฌ์คํธ์์ ์ฌ์ดํด์ด ์๋์ง ์๋์ง๋ฅผ ํ์ธํ ์ ์๊ณ , ํด๋น ์ฌ์ดํด์ ์์์ ์ด ์ด๋์ธ์ง ์์๋ผ ์ ์๋ Floyd's Cycle Detection ์ ๋ํด์ ์์๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Floyd's Cycle Detection ์ด๋? ๐ Robert W. Floyd๊ฐ ๊ณ ์ํ ๋ฆฌ์คํธ์ ์ฌ์ดํด์ ๋น ๋ฅด๊ณ ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. (Robert W. Floyd๋ ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค.. 2022. 9. 18. [Swift] 2022 KAKAO TECH INTERNSHIP ๋ฑ์ฐ์ฝ์ค ์ ํ๊ธฐ Problem ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr Solution ํด๋น ๋ฌธ์ ๋ BFS ํน์ ๋ค์ต์คํธ๋ผ๋ฅผ ์ด์ฉํ์ฌ ํ์ด์ผ ํ๋ ๋ฌธ์ ์ ๋๋ค. 1. ํ์ฌ ๊ฒฝ๋ก์ ์ต๋ intensity์ ํ์ฌ ์ง์ ์ ์ ๋ณด๋ฅผ ๊ฐ๋ Node๋ฅผ ๋ง๋ค์ด ์ค๋ค. struct Node { let current: Int let maxIntensity: Int } 2. ํ์ํ ๋ณ์๋ค์ ์ธํ ํด ์ค๋ค. answer: ๊ฐ์ฅ ์ ์ intensity์ ์ฐ๋ด์ฐ๋ฆฌ์ ๊ฐ์ ์ ์ฅํ ๋ณ์ connection: path์ ์ฐ๊ฒฐ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ ๋ณ์ summitDic: ์ฐ๋ด์ฐ๋ฆฌ๋ฅผ ์ ์ฅํ ๋์ ๋๋ฆฌ gat.. 2022. 8. 29. [Swift] 2022 KAKAO TECH INTERNSHIP ์ฝ๋ฉ ํ ์คํธ ๊ณต๋ถ Problem ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr Solution ํด๋น ๋ฌธ์ ๋ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํ์ด์ผ ํ๋ ๋ฌธ์ ์ด๋ค. 1. ์๊ณ ๋ ฅ๊ณผ ์ฝ๋ฉ๋ ฅ์ ์ต๋์น๋ฅผ ๊ตฌํด์ค๋ค. ๋ฌธ์ ๋ฅผ ๋ชจ๋ ํ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ๋ ฅ๊ณผ ์ฝ๋ฉ๋ ฅ์ ์ต๋์น๋ฅผ ์ป๋ ๋ค๋ ๊ฒ์ด๋ฏ๋ก ๋ฏธ๋ฆฌ ๊ตฌํด์ค๋ค. var maxAlp: Int = alp var maxCop: Int = cop problems.forEach { maxAlp = max(maxAlp,$0[0]) maxCop = max(maxCop,$0[1]) } 2. dp ๋ฐฐ์ด์ ์๊ณ ๋ ฅ + 1 , ์ฝ๋ฉ๋ ฅ + 1๊ฐ์ ์ด์ค ๋ฐฐ์ด์ ๋ง๋ค์ด .. 2022. 8. 26. [Swift] 2022 KAKAO TECH INTERNSHIP ๋ ํ ํฉ ๊ฐ๊ฒ ๋ง๋ค๊ธฐ Problem ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr Solution ๋๋ ์ด๋ฒ ๋ฌธ์ ๋ฅผ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ(Sliding-Window)๋ฅผ ์ด์ฉํด์ ํ์๋ค. 1. ํ์ํ ๋ณ์๋ฅผ ์ธํ ํ๋ค. cumulativeSum: ๋์ ํฉ์ ๋ด์ ๋ฐฐ์ด q1Length: queue1์ ๊ธธ์ด q2Length: queue2์ ๊ธธ์ด answer: ๊ฐ์ฅ ์ ์ ์์ ํ์๋ฅผ ๊ธฐ๋กํ ๋ณ์ start: ์ฌ๋ผ์ด๋ฉ ์๋์ฐ์์ ์์ ์ง์ ์ ๊ฐ๋ฅดํฌ ๋ณ์ var cumulativeSum: [Int] = [0] let q1Length: Int = queue1.count let q2Length: I.. 2022. 8. 24. [Swift] 2022 KAKAO TECH INTERNSHIP ์ฑ๊ฒฉ ์ ํ ๊ฒ์ฌํ๊ธฐ Problem ํ ๋์ ๋ฆฟ์ฝ๋๋ง ํ๋ค๊ฐ ์ ๋ง ์ค๋๋ง์ ํ๋ก๊ทธ๋๋จธ์ค๋ฅผ ๋ค์ด๊ฐ๋๋ ์๋ก์ด ์นด์นด์ค ๋ฌธ์ ๊ฐ ์์ด์ ํ๋ฒ ํ์ด๋ดค๋ค. ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr Solution 1. ์ฃผ์ด์ง ์ฑ๊ฒฉ ์ํ๋ฒณ์ ๋์ ๋๋ฆฌ๋ก ๋ง๋ค์ด ์ค๋ค. var charDic: [Character:Int] = ["R":0,"T":0,"C":0,"F":0,"J":0,"M":0,"A":0,"N":0] 2. survey๋ฅผ ์ํํ๋ฉฐ choice์ ๊ฐ์ ๋ง๊ฒ ์ฒซ ๋ฒ์งธ ๋๋ ๋ ๋ฒ์งธ ์บ๋ฆญํฐ์ ๊ฐ์ ๋ํด์ค๋ค. ๋ง์ฝ choices์ i๋ฒ์งธ ๊ฐ์ด 4๋ณด๋ค ์๋ค๋ฉด ์ฒซ ๋ฒ์งธ ๊ธ์์ 4์์ ํด๋น.. 2022. 8. 23. [Node.js] Prisma + MySQL ๋ค๋๋ค ๊ด๊ณ ๋ง๋ค๊ธฐ (MySQL Many to Many relationship using Prisma) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์์ฆ ์ฑํ ์ฑ์ ๋ง๋ค๋ฉด์ ์ ์ ์ ์ฑํ ๋ฐฉ์ ๊ด๊ณ๋ฅผ ์ค์ ํด์ผ ํ๋๋ฐ ์กฐ๊ธ ๋ณต์กํ ๊ฒ ์๋๋ผ๊ตฌ์. ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๋ฉด ์ฑํ ์ฑ์ ๋ง๋๋๋ฐ User๋ ์ฌ๋ฌ ์ฑํ ๋ฐฉ์ ๊ฐ์ ธ์ผ ํ๊ณ , ์ฑํ ๋ฐฉ์ ์ฌ๋ฌ ์ ์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ค๋๋ค ๊ด๊ณ๋ฅผ ๋ง๋ค๊ณ ์ถ์๋๋ฐ์. ๊ณต์ ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋น ๋ชจ๋ธ๊ณผ ๊ด๊ณ๋ฅผ ์ ๋ฆฌํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Model User ์ ์ ๋ชจ๋ธ์ ์๋์ ๊ฐ์ด ๋ง๋ค์ด ์ค๋๋ค. model User { id String @id @default(uuid()) name String @unique profileImage String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } ChatRoom ์ฑํ ๋ฐฉ ๋ชจ๋ธ์ ์.. 2022. 8. 18. [React Native] ์ค์์ดํ ํ๋ฉด ์ญ์ ๋ฒํผ ๋์ค๋ ์ปดํฌ๋ํธ ๊ตฌํํ๊ธฐ (Swipeable Component with delete button) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์ค๋์ React-Native์์ ์ปดํฌ๋ํธ๋ฅผ ์ค์์ดํ ํ์ ๋ ์ญ์ ๋ฒํผ์ด ๋์ค๋ ๊ธฐ๋ฅ์ ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Preview Install npm install --save react-native-gesture-handler Screen.tsx import {Swipeable, GestureHandlerRootView} from 'react-native-gesture-handler'; ์ค๋ฅธ์ชฝ์ ๋ค์ด๊ฐ Delete ๋ฒํผ์ ๋ง๋ค์ด ์ค๋๋ค. dragX๋ฅผ ๋ฐ์์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๊ณ , id์ List์ index๋ฅผ ๋ฐ์์ ๋ฒํผ์ ๋๋ ์ ๋ ํด๋น index๋ฅผ ์ถ๋ ฅํด ๋ณด๊ฒ ์ต๋๋ค. const renderRightActions = (dragX, index) => { co.. 2022. 8. 18. [React Native] RTK-Query ํ๋ผ๋ฏธํฐ์ ๋ง๊ฒ ํน์ ๋ฐ์ดํฐ๋ง ๋ถ๋ฌ์ค๊ธฐ(Get specific data by parameter using RTK-query) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์ค๋์ RTK-Query์์ ํ๋ผ๋ฏธํฐ์ ๋ง๊ฒ ์ํ๋ ํน์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ง์ ์ฝ์ง์ ํ๊ณ ๊ฒฐ๊ตญ ํด๊ฒฐ๋ฒ์ ์์๋ด๊ฒ ๋์ด ๊ธ๋ก ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ 1. ์ฒซ ๋ฒ์งธ ์๋ ์ฐ์ ์ ๊ฐ ํ๋ ค ํ๋๊ฑด ์ ์ ๋ฅผ ์ด๋ฆ์ผ๋ก ์กฐํํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ด์๋๋ฐ์. ์๋์ ๊ฐ์ด ์ฟผ๋ฆฌ๋ฅผ ํตํด์ ์๋ํฌ์ธํธ๋ฅผ ๋ง๋ค์์ต๋๋ค. export const userAPISlice = createApi({ reducerPath: 'userAPI', baseQuery: fetchBaseQuery({baseUrl: 'http://192.168.111.34:3001/api'}), endpoints: builder => ({ ... getUserByName: builde.. 2022. 8. 12. [React Native] useNavigation์ useRoute ์ด์ฉํด์ ํ๋ฉด ์ด๋ํ๊ณ ๋ฐ์ดํฐ ์ ๋ฌํ๊ธฐ (Move and Pass data between two screens using Hooks) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ํ์์ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ์์ navigation์ props๋ก ์ ๋ฌํ๋ ๊ฒ ๋๋ฌด ๋ถํธํ๋๋ฐ์. ์ค๋์ React-Native์์ navigation์ props๋ก ์ ๋ฌํ๋ ๊ฒ์ด ์๋, useNavigation๊ณผ useRoute๋ฅผ ๋ง๋ค์ด ์ค์ ํ๋ฉด์ ์ด๋๊ณผ ํจ๊ป ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ๋ฐ์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Install npm install @react-navigation/native npm install @react-navigation/native-stack npm install @react-navigation/stack npm install react-native-safe-area-context Navigation Navigation/index.ts ๊ธฐ์กด Pro.. 2022. 8. 12. [React Native] ChatApp Socket.io Room ์ ์ฉํ๊ธฐ (feat. TypeScript) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์ ๋ฒ ๊ธ์์ Node.js์์ Socket.io๋ฅผ ์ด์ฉํ์ฌ Room์ ๋ง๋ค์ด ๋ณด์๋๋ฐ์. (ํน์ ์๋ณด์ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ํ์ธํด ์ฃผ์ธ์!) ์ค๋์ ๋ฐฑ์๋ ์๋ฒ์์ ์จ ๋ฐ์ดํฐ๋ฅผ ํ๋ก ํธ์ ์ ์ฉํด ๋ณด๋ ๊ณผ์ ์ ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Preview Install npm install @react-navigation/native npm install @react-navigation/native-stack npm install react-native-screens npm install react-native-safe-area-context npm install socket.io-client ScreenEnums ์คํฌ๋ฆฐ ์ข ๋ฅ๋ฅผ Enum์ผ๋ก ๋ง๋ค์ด ๋์ต๋๋ค. export .. 2022. 8. 10. [Node.js] Socket.io๋ก Room ๊ตฌํํ๊ธฐ (feat. TypeScript) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์ค๋์ Socket.io๋ฅผ ์ด์ฉํ์ฌ Room์ ๊ตฌํํด ํน์ Room์ ์๋ ์ ์ ๋ค์๊ฒ๋ง ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ผ ์ ์๋๋ก ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Preview Install typescript, ts-node, express, socket.io ๋ฅผ ์ค์นํด ์ค๋๋ค. npm install typescript npm install ts-node npm install express npm install socket.io npm install @types/express npm install @types/socket.io Model ๋ฉ์ธ์ง ๋ชจ๋ธ์ ๋ง๋ค์ด ์ค๋๋ค. export interface Message { type: string; user: string; message: str.. 2022. 8. 10. ์ด์ 1 2 3 4 ยทยทยท 49 ๋ค์ 728x90 ๋ฐ์ํ