├── Algorithm ├── HashTable.md ├── Solution │ ├── 2023 │ │ └── 01 │ │ │ ├── week1 │ │ │ ├── KSH │ │ │ │ ├── 0001-two-sum.java │ │ │ │ ├── 0034-find-first-and-last-position-of-element-in-sorted-array.java │ │ │ │ ├── 0121-best-time-to-buy-and-sell-stock.java │ │ │ │ ├── 0242-valid-anagram.java │ │ │ │ ├── N개의 최소공배수.java │ │ │ │ └── 피보나치 수.java │ │ │ ├── PMS │ │ │ │ ├── 1-two-sum.java │ │ │ │ ├── 121-best-time-to-buy-and-sell-stock.java │ │ │ │ ├── 12945-피보나치수.java │ │ │ │ ├── 12953-N개의-최소공배수.java │ │ │ │ ├── 13-roman-to-integer.java │ │ │ │ ├── 242-valid-anagram.java │ │ │ │ └── 34-find-first-and-last-position-of-element-in-sorted-array.java │ │ │ └── SWS │ │ │ │ ├── 0001-two-sum.java │ │ │ │ ├── 0013-roman-to-integer.java │ │ │ │ ├── 0242-valid-anagram.java │ │ │ │ ├── 121-best-time-to-buy-and-sell-stock.java │ │ │ │ ├── 34-find-first-and-last-position-of-element-in-sorted-array.java │ │ │ │ ├── N개의 최소공배수.java │ │ │ │ └── 피보나치 수.java │ │ │ └── week2 │ │ │ ├── PMS │ │ │ ├── N과 M (1).java │ │ │ ├── N과 M (4).java │ │ │ ├── 게임맵최단거리.java │ │ │ ├── 위장.java │ │ │ ├── 전화번호 목록.java │ │ │ └── 타겟 넘버.java │ │ │ └── SWS │ │ │ ├── N과 M (4).java │ │ │ ├── N과 M(1).java │ │ │ ├── 게임 맵 최단거리.java │ │ │ ├── 위장.java │ │ │ ├── 전화번호 목록.java │ │ │ └── 타겟 넘버.java │ ├── 2020-12-29 │ │ ├── 박민식 │ │ │ ├── Main_1697_숨바꼭질.java │ │ │ ├── Main_20166_문자열지옥에빠진호석.java │ │ │ ├── Main_2606_바이러스.java │ │ │ ├── Main_4358_생태학_fail.java │ │ │ └── Main_4358_생태학_retry.java │ │ └── 송원석 │ │ │ ├── Main_1697_숨바꼭질.java │ │ │ ├── Main_20166_문자열지옥에빠진호석.java │ │ │ ├── Main_2606_바이러스.java │ │ │ └── Main_4358_생태학.java │ ├── 2020-12-30 │ │ ├── 박민식 │ │ │ ├── Main_2573_빙산.java │ │ │ ├── Main_2839_설탕배달.java │ │ │ └── Main_5585_거스름돈.java │ │ └── 송원석 │ │ │ ├── Main_1783_병든나이트.java │ │ │ ├── Main_2573_빙산.java │ │ │ ├── Main_2839_설탕배달.java │ │ │ └── Main_5585_거스름돈.java │ ├── 2020-12-31 │ │ ├── 박민식 │ │ │ ├── Main_1057_토너먼트.java │ │ │ ├── Main_10819_차이를최대로.java │ │ │ ├── Main_10971_외판원순회2.java │ │ │ └── Main_1238_파티.java │ │ └── 송원석 │ │ │ ├── Main_1057_토너먼트.java │ │ │ ├── Main_10819_차이를최대로.java │ │ │ ├── Main_10971_외판원순회2.java │ │ │ └── Main_1238_파티.java │ ├── 2021-01-05 │ │ ├── 박민식 │ │ │ ├── Main_1764_듣보잡.java │ │ │ ├── Main_1922_네트워크연결.java │ │ │ ├── Main_2941_크로아티아알파벳.java │ │ │ └── Main_9342_염색체.java │ │ └── 송원석 │ │ │ ├── Main_1764_듣보잡.java │ │ │ ├── Main_1922_네트워크연결_kruskal.java │ │ │ ├── Main_1922_네트워크연결_prim.java │ │ │ ├── Main_2941_크로아티아알파벳.java │ │ │ └── Main_9342_염색체.java │ ├── 2021-01-06 │ │ ├── 박민식 │ │ │ ├── Main_1316_그룹단어체커.java │ │ │ ├── Main_1931_회의실배정.java │ │ │ ├── Main_2947_나무조각.java │ │ │ └── Main_9372_상근이의여행.java │ │ └── 송원석 │ │ │ ├── Main_1316_그룹단어체커.java │ │ │ ├── Main_1931_회의실배정.java │ │ │ ├── Main_2947_나무조각.java │ │ │ └── Main_9372_상근이의여행.java │ ├── 2021-01-11 │ │ └── 송원석 │ │ │ ├── Main_2531_회전초밥.java │ │ │ ├── Programmers_N으로표현.java │ │ │ ├── Programmers_N으로표현.js │ │ │ ├── Programmers_디스크컨트롤러.js │ │ │ └── Programmers_위장.js │ ├── 2021-01-12 │ │ └── 송원석 │ │ │ ├── Bruteforce_카펫.js │ │ │ ├── Greedy_체육복.js │ │ │ ├── Heap_이중우선순위큐.js │ │ │ └── Sort_H-Index.js │ ├── 2021-01-13 │ │ ├── 남동해 │ │ │ ├── Main_bj_11403_경로찾기_FloydWarshall.java │ │ │ ├── Main_bj_11403_경로찾기_dfs.java │ │ │ ├── Main_bj_11441_합구하기.java │ │ │ ├── Main_bj_13901_로봇.java │ │ │ └── Solution_pro_이분탐색_입국심사.java │ │ ├── 박민식 │ │ │ ├── Main_11403_경로찾기.java │ │ │ ├── Main_11441_합구하기.java │ │ │ ├── Main_13901_로봇.java │ │ │ └── Programmers_입국심사.java │ │ └── 송원석 │ │ │ ├── BinarySearch_입국심사.js │ │ │ ├── Main_11403_경로찾기.java │ │ │ ├── Main_11441_합구하기.java │ │ │ ├── Main_11441_합구하기.js │ │ │ └── Main_13901_로봇.java │ ├── 2021-01-14 │ │ ├── 남동해 │ │ │ ├── CircleQueue.java │ │ │ ├── MaxHeap.java │ │ │ ├── MergeSort.java │ │ │ ├── QueueTest.java │ │ │ ├── QuickSort.java │ │ │ └── StackTest.java │ │ ├── 박민식 │ │ │ ├── Heap구현.java │ │ │ ├── MergeSort구현.java │ │ │ ├── Queue구현.java │ │ │ ├── QuickSort구현.java │ │ │ └── Stack구현.java │ │ └── 송원석 │ │ │ ├── Heap.js │ │ │ ├── MergeSort.java │ │ │ ├── MergeSort.js │ │ │ ├── Queue.js │ │ │ ├── Queue_stack.js │ │ │ ├── QuickSort.java │ │ │ ├── QuickSort.js │ │ │ ├── Stack_Array.js │ │ │ └── Stack_LinkedList.js │ ├── 2021-01-15 │ │ ├── 남동해 │ │ │ ├── Main_bj_1654_랜선자르기.java │ │ │ ├── Main_bj_2210_숫자판점프.java │ │ │ ├── Main_bj_2447_별찍기10.java │ │ │ └── Solution_pro_깊이너비우선탐색_타겟넘버.java │ │ ├── 박민식 │ │ │ ├── Main_1654_랜선자르기.java │ │ │ ├── Main_2210_숫자판점프.java │ │ │ ├── Main_2447_별찍기10.java │ │ │ └── Programmers_타겟넘버.java │ │ └── 송원석 │ │ │ ├── DFS_BFS_타겟넘버.java │ │ │ ├── DFS_BFS_타겟넘버.js │ │ │ ├── Main_1654_랜선자르기.java │ │ │ ├── Main_1654_랜선자르기.js │ │ │ ├── Main_2210_숫자판점프.js │ │ │ └── Main_2447_별찍기10.js │ ├── 2021-01-18 │ │ ├── 남동해 │ │ │ ├── Main_bj_11399_ATM.java │ │ │ ├── Main_bj_1392_노래악보.java │ │ │ ├── Main_bj_16165_걸그룹마스터준석이.java │ │ │ └── Main_bj_1927_최소힙.java │ │ ├── 박민식 │ │ │ ├── Main_11399_ATM.java │ │ │ ├── Main_1392_노래악보.java │ │ │ ├── Main_16165_걸그룹마스터준석이.java │ │ │ └── Main_1927_최소힙.java │ │ └── 송원석 │ │ │ ├── BOJ_11399_ATM.js │ │ │ ├── BOJ_1392_노래악보.js │ │ │ ├── BOJ_1927_최소힙.js │ │ │ ├── Main_1392_노래악보.java │ │ │ ├── Main_16165_걸그룹마스터준석이.java │ │ │ ├── Main_1654_랜선자르기.java │ │ │ └── Main_1927_최소힙.java │ ├── 2021-01-20 │ │ ├── 남동해 │ │ │ ├── Main_bj_1094_막대기.java │ │ │ ├── Main_bj_12865_평범한배낭.java │ │ │ ├── Main_bj_12865_평범한배낭_hint.java │ │ │ ├── Main_bj_1946_신입사원.java │ │ │ ├── Main_bj_1946_신입사원_hint.java │ │ │ └── Main_bj_2630_색종이만들기.java │ │ ├── 박민식 │ │ │ ├── Main_1094_막대기.java │ │ │ ├── Main_12865_평범한배낭.java │ │ │ ├── Main_1946_신입사원.java │ │ │ └── Main_2630_색종이만들기.java │ │ └── 송원석 │ │ │ ├── Main_1094_막대기.java │ │ │ ├── Main_12865_평범한배낭.java │ │ │ ├── Main_1946_신입사원.java │ │ │ └── Main_2630_색종이만들기.java │ ├── 2021-01-21 │ │ ├── 남동해 │ │ │ ├── Main_bj_1062_가르침_dfs_비트마스킹아님.java │ │ │ ├── Main_bj_10825_국영수.java │ │ │ ├── Main_bj_16917_양념반후라이드반.java │ │ │ └── Main_bj_9251_LCS.java │ │ ├── 박민식 │ │ │ ├── Main_1062_가르침.java │ │ │ ├── Main_10825_국영수.java │ │ │ ├── Main_16917_양념반후라이드반.java │ │ │ └── Main_9251_LCS.java │ │ └── 송원석 │ │ │ ├── BOJ_1062_가르침.js │ │ │ ├── BOJ_10825_국영수.js │ │ │ ├── BOJ_16917_양념반후라이드반.js │ │ │ └── BOJ_9251_LCS.js │ ├── 2021-01-22 │ │ ├── 남동해 │ │ │ ├── Solution_채널톡코테1.java │ │ │ ├── Solution_채널톡코테2.java │ │ │ ├── Solution_채널톡코테3.java │ │ │ ├── Solution_채널톡코테4.java │ │ │ ├── Solution_채널톡코테5.java │ │ │ └── Solution_채널톡코테6.java │ │ └── 송원석 │ │ │ ├── solution1.js │ │ │ ├── solution2.js │ │ │ ├── solution3.js │ │ │ ├── solution4.js │ │ │ ├── solution5.js │ │ │ └── solution6.js │ ├── 2021-01-25 │ │ ├── 남동해 │ │ │ ├── Main_bj_11723_집합.java │ │ │ ├── Main_bj_11725_트리의부모찾기.java │ │ │ └── Main_bj_1958_LCS3.java │ │ ├── 박민식 │ │ │ ├── Main_11723_집합.java │ │ │ ├── Main_11725_트리의부모찾기.java │ │ │ └── Main_9252_LCS2.java │ │ └── 송원석 │ │ │ ├── BOJ_11723_집합.js │ │ │ ├── BOJ_11725_트리의부모찾기.js │ │ │ ├── BOJ_14852_타일채우기3.js │ │ │ ├── BOJ_1958_LCS3.js │ │ │ ├── BOJ_9252_LCS2.js │ │ │ └── Main_11723_집합.java │ ├── 2021-01-26 │ │ ├── 남동해 │ │ │ ├── Main_bj_1003_피보나치함수.java │ │ │ ├── Main_bj_19238_스타트택시.java │ │ │ ├── Main_bj_2346_풍선터뜨리기.java │ │ │ └── Main_bj_2775_부녀회장이될테야.java │ │ └── 송원석 │ │ │ ├── BOJ_1003_피보나치함수.js │ │ │ ├── BOJ_19238_스타트택시.js │ │ │ ├── BOJ_2346_풍선터뜨리기.js │ │ │ ├── BOJ_2775_부녀회장이될테야.js │ │ │ ├── Main_19238_스타트택시.java │ │ │ └── Main_2346_풍선터뜨리기.java │ ├── 2021-01-27 │ │ ├── 남동해 │ │ │ └── Solution_pro_섬연결하기.java │ │ └── 송원석 │ │ │ ├── Greedy_섬연결하기.js │ │ │ └── Kakao_기둥과보.js │ ├── 2021-02-01 │ │ ├── 남동해 │ │ │ ├── Solution_pro_코테1.java │ │ │ ├── Solution_pro_코테2_미완.java │ │ │ └── Solution_pro_코테3.java │ │ └── 송원석 │ │ │ ├── Solution1.java │ │ │ ├── Solution2.java │ │ │ └── Solution3.java │ ├── 2021-02-02 │ │ ├── 남동해 │ │ │ ├── Main_bj_1806_부분합.java │ │ │ ├── Main_bj_18111_마인크래프트.java │ │ │ ├── Main_bj_2671_잠수함식별.java │ │ │ └── Main_bj_2954_창영이의일기장.java │ │ └── 송원석 │ │ │ ├── BOJ_1806_부분합.js │ │ │ ├── BOJ_18111_마인크래프트.js │ │ │ ├── BOJ_2671_잠수함식별.js │ │ │ ├── BOJ_2954_창영이의일기장.js │ │ │ ├── Main_1806_부분합.java │ │ │ ├── Main_18111_마인크래프트.java │ │ │ ├── Main_2671_잠수함식별.java │ │ │ └── Main_2954_창영이의일기장.java │ ├── 2021-02-03 │ │ ├── 남동해 │ │ │ ├── Solution_pro_메뉴리뉴얼_리팩토링.java │ │ │ └── Solution_pro_추석트래픽.java │ │ └── 송원석 │ │ │ ├── Kakao_메뉴리뉴얼.js │ │ │ └── Kakao_추석트래픽.js │ ├── 2021-02-09 │ │ └── 남동해 │ │ │ ├── Solution_코테1.java │ │ │ ├── Solution_코테2.java │ │ │ └── Solution_코테3.java │ ├── 2021-02-10 │ │ ├── 남동해 │ │ │ ├── Solution_pro_비밀지도.java │ │ │ ├── Solution_pro_신규아이디추천.java │ │ │ └── Solution_pro_후보키.java │ │ └── 송원석 │ │ │ ├── KAKAO_2018_비밀지도.java │ │ │ ├── KAKAO_2019_후보키.java │ │ │ └── KAKAO_2021_신규아이디추천.java │ ├── 2021-02-17 │ │ ├── 남동해 │ │ │ ├── Solution_pro_괄호변환.java │ │ │ ├── Solution_pro_다트게임.java │ │ │ └── Solution_pro_키패드누르기.java │ │ └── 송원석 │ │ │ ├── KAKAO_2020_괄호변환.java │ │ │ ├── KAKAO_2020_키패드누르기.java │ │ │ └── Kakao_다트게임.js │ ├── 2021-02-19 │ │ ├── 남동해 │ │ │ ├── Main_bj_1002_터렛_루트.java │ │ │ ├── Main_bj_2042_구간합구하기.java │ │ │ ├── Main_bj_2303_숫자게임.java │ │ │ └── Main_bj_8958_OX퀴즈.java │ │ └── 송원석 │ │ │ ├── Main_1002_터렛.java │ │ │ ├── Main_2042_구간합구하기.java │ │ │ ├── Main_2303_숫자게임.java │ │ │ └── Main_8958_OX퀴즈.java │ ├── 2021-02-22 │ │ ├── 남동해 │ │ │ ├── Main_bj_1012_유기농배추.java │ │ │ ├── Main_bj_17609_회문.java │ │ │ ├── Main_bj_1991_트리순회.java │ │ │ └── Main_bj_2636_치즈.java │ │ └── 송원석 │ │ │ ├── Main_1012_유기농배추.java │ │ │ ├── Main_17609_회문.java │ │ │ ├── Main_1991_트리순회.java │ │ │ └── Main_2636_치즈.java │ ├── 2021-02-24 │ │ └── 남동해 │ │ │ ├── Main_bj_1068_트리.java │ │ │ ├── Main_bj_11053_가장긴증가하는부분수열.java │ │ │ └── Main_bj_1780_종이의개수.java │ ├── 2021-02-26 │ │ └── 남동해 │ │ │ ├── Solution_pro_N진수게임.java │ │ │ └── Solution_pro_튜플.java │ ├── 2021-03-03 │ │ └── 남동해 │ │ │ ├── Main_bj_1904_01타일.java │ │ │ ├── Main_bj_1931_회의실배정.java │ │ │ └── Main_bj_2292_벌집.java │ ├── 2021-03-16 │ │ ├── 남동해 │ │ │ ├── Main_bj_pro_캐시.java │ │ │ └── Main_bj_pro_프렌즈4블록.java │ │ └── 박민식 │ │ │ ├── Programmers_캐시.java │ │ │ └── Programmers_프렌즈4블록.java │ ├── 2021-09-15 │ │ └── 송원석 │ │ │ └── KAKAO_2017_보행자천국.java │ ├── 2021-09-16 │ │ └── 송원석 │ │ │ └── KAKAO_2019_길찾기게임.java │ ├── 2021-09-17 │ │ ├── 문지현 │ │ │ ├── KAKAO_표편집.java │ │ │ └── 가장긴팰린드롬.java │ │ └── 송원석 │ │ │ └── KAKAO_2021_표편집.java │ ├── 2021-09-18 │ │ ├── 송원석 │ │ │ └── Practice_가장긴팰린드롬.java │ │ └── 황인규 │ │ │ └── Practice_가장긴펠린드롬.py │ ├── 2021-09-23 │ │ ├── 문지현 │ │ │ └── 정수삼각형.java │ │ └── 송원석 │ │ │ └── Programmers_정수삼각형.java │ ├── 2021-09-24 │ │ ├── 문지현 │ │ │ └── 다단계칫솔판매.java │ │ └── 송원석 │ │ │ └── Programmers_다단계칫솔판매.java │ ├── 2021-09-25 │ │ ├── 문지현 │ │ │ └── 부족한금액계산하기.java │ │ └── 송원석 │ │ │ └── Programmers_부족한금액계산하기.java │ ├── 2021-09-27 │ │ ├── 문지현 │ │ │ └── 앱.java │ │ └── 송원석 │ │ │ └── BOJ_7579_앱.java │ ├── 2021-10-05 │ │ ├── 문지현 │ │ │ └── N으로표현.java │ │ └── 송원석 │ │ │ └── Programmers_N으로표현.java │ ├── 2021-10-06 │ │ └── 황인규 │ │ │ └── N으로표현하는수.py │ ├── 2021-10-07 │ │ ├── 문지현 │ │ │ ├── LCS.java │ │ │ └── 자동완성.java │ │ └── 송원석 │ │ │ ├── BOJ_9251_LCS.java │ │ │ └── Programmers_자동완성.java │ ├── 2021-10-08 │ │ ├── 문지현 │ │ │ └── 숫자의표현.java │ │ ├── 송원석 │ │ │ └── Programmers_숫자의표현.java │ │ └── 황인규 │ │ │ ├── BOJ_9251_LCS.py │ │ │ └── [3차]자동완성.py │ ├── 2021-10-13 │ │ └── 황인규 │ │ │ └── BOJ_1911_흙길보수하기.py │ ├── 2021-10-14 │ │ ├── 문지현 │ │ │ ├── 가르침.java │ │ │ └── 흙길보수하기.java │ │ ├── 송원석 │ │ │ └── BOJ_1911_흙길보수하기.java │ │ └── 황인규 │ │ │ └── BOJ_1062_가르침.py │ └── 2021-10-15 │ │ └── 송원석 │ │ └── BOJ_1062_가르침.java ├── image │ ├── binarysearch.GIF │ ├── bitmask-1.png │ ├── bitmask-2.png │ ├── bubblesort.GIF │ ├── countingsort.GIF │ ├── heapsort-1.PNG │ ├── heapsort-2.PNG │ ├── heapsort-3.PNG │ ├── heapsort.GIF │ ├── insertionsort.GIF │ ├── mergesort-1.PNG │ ├── mergesort.GIF │ ├── quicksort-1.PNG │ ├── quicksort-2.PNG │ ├── quicksort-3.PNG │ ├── quicksort.GIF │ ├── radixsort.GIF │ ├── segment-tree-1.PNG │ └── selectionsort.GIF ├── 거품 정렬(Bubble Sort).md ├── 계수 정렬(Counting Sort).md ├── 기수 정렬(Radix Sort).md ├── 비스마스크(BitMask).md ├── 삽입 정렬(Insertion Sort).md ├── 선택 정렬(Selection Sort).md ├── 세그먼트 트리.md ├── 이분 탐색(Binary Search).md ├── 퀵 정렬(Quick Sort).md ├── 합병 정렬(Merge Sort).md └── 힙 정렬(Heap Sort).md ├── CommonSense ├── Agile.md ├── Generic.md ├── Git.md ├── TDD(Test Driven Development).md ├── images │ ├── Agile-1.PNG │ ├── Agile-2.JPG │ ├── Agile-3.PNG │ ├── TDD-1.PNG │ ├── TDD-2.PNG │ ├── TDD-3.PNG │ ├── cleancode-refactoring-1.JPG │ ├── cleancode-securecoding-1.JPG │ ├── cleancode-securecoding-2.JPG │ ├── functional-programming-1.jpg │ ├── git-1.png │ └── thirdparty-1.jpg ├── 객체 지향 프로그래밍.md ├── 데브옵스(DevOps).md ├── 써드 파티 (Third Party).md ├── 정규식.md ├── 클린코드&리팩토링&시큐어코딩.md ├── 함수형 프로그래밍 Ⅱ.md └── 함수형 프로그래밍Ⅰ.md ├── DataStructure ├── Array&ArrayList&LinkedList.md ├── Heap.md ├── Stack & Queue.md └── images │ ├── array-1.PNG │ ├── array-2.PNG │ ├── array-3.PNG │ ├── array-4.PNG │ ├── array-5.PNG │ ├── array-6.PNG │ ├── heap-1.PNG │ ├── heap-2.PNG │ ├── heap-3.PNG │ ├── queue-1.PNG │ └── stack-1.PNG ├── Database ├── Anomaly.md ├── Index.md ├── JOIN.md ├── SQL Injection.md ├── SQL vs NoSQL.md ├── Transaction.md ├── images │ ├── JOIN-1.JPG │ ├── JOIN-2-1.JPG │ ├── JOIN-2.JPG │ ├── JOIN-3-1.JPG │ ├── JOIN-3.JPG │ ├── JOIN-4-1.JPG │ ├── JOIN-4.JPG │ ├── JOIN-5.JPG │ ├── SQLvsNoSQL-1.jpg │ ├── SQLvsNoSQL-2.jpg │ ├── SQLvsNoSQL-3.jpg │ ├── SQLvsNoSQL-4.jpg │ ├── SQLvsNoSQL-5.jpg │ ├── SQLvsNoSQL-6.png │ ├── SQLvsNoSQL-7.png │ ├── Sqlinjection-1.PNG │ ├── Sqlinjection-2.png │ ├── Sqlinjection-3.png │ ├── Sqlinjection-4.png │ ├── Sqlinjection-5.png │ ├── Transaction-1.png │ ├── 정규화-1.png │ ├── 키정리-1.JPG │ ├── 키정리-2.JPG │ ├── 키정리-3.JPG │ ├── 키정리-4.JPG │ ├── 키정리-5.JPG │ └── 키정리-6.JPG ├── 정규화.md └── 키(Key) 정리.md ├── DesignPattern ├── images │ ├── adapter-pattern-1.png │ ├── adapter-pattern-2.png │ ├── 디자인패턴개요-1.png │ ├── 디자인패턴개요-2.png │ ├── 디자인패턴개요-3.png │ └── 디자인패턴개요-4.png ├── 디자인패턴 개요(Overview).md ├── 싱글톤패턴.md ├── 어탭터패턴.md └── 템플릿 메소드 패턴.md ├── Language ├── Java │ ├── Annotation.md │ ├── Call by Value VS Call by Reference.md │ ├── Casting.md │ ├── Garbage Collection.md │ ├── Intrinsic Lock.md │ ├── JVM.md │ ├── Java 컴파일 과정.md │ ├── Overriding vs Overloading.md │ ├── Primitive type vs Reference type.md │ ├── Promotion&Casting.md │ ├── String StringBuffer StringBuilder.md │ └── Thread 활용.md ├── Javascript │ ├── Closure.md │ ├── ECMAScript6.md │ ├── Hoisting.md │ ├── JavaScript Event Loop.md │ ├── Javascript Scope.md │ ├── Promise.md │ └── this.md └── images │ ├── Casting-1.png │ ├── Casting-2.png │ ├── IntrinsicLock-1.png │ ├── OverridingvsOverroading-1.jpg │ ├── OverridingvsOverroading-2.jpg │ ├── String-1.png │ ├── String-2.png │ ├── String-3.png │ ├── java-JVM-1.PNG │ ├── java-JVM-2.PNG │ ├── java-JVM-3.PNG │ ├── java-Primitive Type vs Reference Type-1.PNG │ ├── java-callbyvalue-callbyreference-1.png │ ├── java-callbyvalue-callbyreference-2.png │ ├── java-compile-1.PNG │ ├── java-garbage-collection-1.png │ ├── java-garbage-collection-2.png │ ├── java-thread-활용-1.png │ ├── js-closure-1.PNG │ ├── js-closure-2.PNG │ ├── js-event-loop-1.PNG │ ├── js-event-loop-2.PNG │ ├── js-event-loop-3.PNG │ ├── js-event-loop-4.PNG │ ├── js-scope-1.PNG │ ├── js-scope-2.PNG │ ├── js-scope-3.PNG │ ├── promotion-casting-1.png │ ├── promotion-casting-2.png │ └── promotion-casting-3.png ├── Network ├── HTTP&HTTPS.md ├── OSI 7계층.md ├── TCP 3 way handshake & 4 way handshake.md ├── TCPIP 흐름제어 & 혼잡제어.md ├── TCPvsUDP.md ├── images │ ├── HTTPS-1.PNG │ ├── OSI7계층-1.JPG │ ├── OSI7계층-2.JPG │ ├── TCP-3-way-handshake&4-way-handshake-1.png │ ├── TCP-3-way-handshake&4-way-handshake-2.png │ ├── TCPIP-흐름제어&혼잡제어-1.png │ ├── TCPIP-흐름제어&혼잡제어-2.png │ ├── TCPIP-흐름제어&혼잡제어-3.png │ ├── TCPIP-흐름제어&혼잡제어-4.png │ ├── TCPIP-흐름제어&혼잡제어-5.png │ ├── TCPIP-흐름제어&혼잡제어-6.png │ ├── TCPIP-흐름제어&혼잡제어-7.png │ ├── TCPUDP-1.png │ ├── TCPUDP-2.png │ ├── TCPUDP-3.png │ ├── TCPUDP-4.png │ ├── load-balance-1.PNG │ ├── load-balance-2.PNG │ ├── load-balance-3.PNG │ ├── load-balance-4.PNG │ ├── load-balance-5.PNG │ ├── load-balance-6.PNG │ ├── load-balance-7.PNG │ ├── 대칭키공개키-1.PNG │ ├── 대칭키공개키-2.PNG │ ├── 대칭키공개키-3.PNG │ └── 대칭키공개키-4.png ├── 대칭키공개키.md └── 로드밸런싱.md ├── OS ├── CPU Scheduling.md ├── Deadlock.md ├── IPC.md ├── Interrupt.md ├── PCB Context Switching.md ├── images │ ├── IPC-1.PNG │ ├── IPC-2.PNG │ ├── IPC-3.png │ ├── Interrupt-1.PNG │ ├── PCBContextSwitching-1.png │ ├── PCBContextSwitching-2.png │ ├── deadlock-1.PNG │ ├── deadlock-2.jpg │ ├── process-1.png │ ├── process-2.png │ ├── process-3.png │ ├── processaddress-1.png │ ├── processaddress-2.png │ ├── processaddress-3.png │ ├── processaddress-4.png │ ├── scheduling-1.PNG │ ├── scheduling-2.PNG │ ├── scheduling-3.PNG │ ├── scheduling-4.PNG │ ├── system-call-1.png │ ├── system-call-2.png │ ├── system-call-3.png │ ├── thread-1.png │ ├── thread-2.png │ ├── 운영체제란-1.png │ └── 운영체제란-2.png ├── 시스템 콜 (System Call).md ├── 운영체제란.md ├── 프로세스 주소공간.md └── 프로세스vs스레드.md ├── README.md ├── Web ├── CORS.md ├── CSS Methodology.md ├── CSS 선택자 우선순위.md ├── Event-Bubbling&Capturing.md ├── Event-Delegation.md ├── HTTP-Method.md ├── Normalize css VS Reset css.md ├── RESTFul-API.md ├── Reflow&Repaint.md ├── SSR vs CSR.md ├── images │ ├── HTTP-Mehtod-1.JPG │ ├── RESTful-1.JPG │ ├── browser-1.PNG │ ├── browser-2.PNG │ ├── browser-3.PNG │ ├── bublling&caturing-1.PNG │ ├── bublling&caturing-2.PNG │ ├── delegation.PNG │ ├── performance-1.PNG │ ├── performance-2.PNG │ ├── performance-3.PNG │ ├── performance-4.PNG │ ├── performance-5.PNG │ ├── performance-6.PNG │ ├── performance-7.JPG │ ├── reflow&repaint-1.PNG │ ├── reflow&repaint-2.PNG │ ├── reflow&repaint-3.PNG │ └── reflow&repaint-4.PNG ├── 브라우저 작동원리.md ├── 웹 성능 최적화.md └── 크로스 브라우징.md └── docs └── pull_request_template.md /Algorithm/Solution/2020-12-29/박민식/Main_4358_생태학_retry.java: -------------------------------------------------------------------------------- 1 | package algo_study; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | import java.util.ArrayList; 6 | import java.util.Arrays; 7 | import java.util.Collections; 8 | import java.util.HashMap; 9 | 10 | public class Main_4358_생태학_retry { 11 | 12 | public static void main(String[] args) throws Exception { 13 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 14 | StringBuilder sb = new StringBuilder(); 15 | HashMap trees = new HashMap<>(); 16 | String tree = null; 17 | int treeCount = 0; 18 | while(true) { 19 | tree = br.readLine(); 20 | if(tree == null || tree.length() == 0) break; 21 | trees.put(tree, trees.getOrDefault(tree, 0.0) + 1.0); 22 | treeCount++; 23 | } 24 | Object[] array = trees.keySet().toArray(); 25 | Arrays.sort(array); 26 | for(Object key: array) { 27 | String selectTree = (String)key; 28 | double treePercent = trees.get(selectTree); 29 | treePercent = Math.round((treePercent / treeCount) * 100.0 * 10000.0) / 10000.0; 30 | sb.append(selectTree + " " + String.format("%.4f", treePercent) +"\n"); 31 | } 32 | System.out.println(sb); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /Algorithm/Solution/2020-12-29/송원석/Main_1697_숨바꼭질.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_1697_숨바꼭질 { 7 | static int MAX_RANGE = 100001; 8 | 9 | public static void main(String[] args) throws Exception{ 10 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | StringTokenizer st = new StringTokenizer(br.readLine()); 12 | boolean[] visit = new boolean[MAX_RANGE]; 13 | int N = Integer.parseInt(st.nextToken()); // 수빈이 위치 14 | int K = Integer.parseInt(st.nextToken()); // 동생 위치 15 | visit[N] = true; 16 | 17 | Queue queue = new LinkedList<>(); 18 | 19 | queue.add(new int[]{N,0}); 20 | 21 | while(!queue.isEmpty()) { 22 | int[] curr = queue.poll(); 23 | if(curr[0] == K) { 24 | System.out.println(curr[1]); 25 | break; 26 | } 27 | 28 | int[] next = {curr[0]-1, curr[0]+1, curr[0]*2}; 29 | 30 | for(int i=0;i= MAX_RANGE || visit[next[i]]) 32 | continue; 33 | visit[next[i]] = true; 34 | queue.add(new int[] {next[i], curr[1]+1}); 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Algorithm/Solution/2020-12-29/송원석/Main_2606_바이러스.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_2606_바이러스 { 7 | 8 | public static void main(String[] args) throws Exception{ 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | int vertices = Integer.parseInt(br.readLine()); 11 | int lines = Integer.parseInt(br.readLine()); 12 | int[][] graph = new int[vertices+1][vertices+1]; 13 | boolean[] visit = new boolean[vertices+1]; 14 | 15 | for(int i=0;i queue = new LinkedList<>(); 29 | 30 | queue.add(start); 31 | visit[start] = true; 32 | 33 | while(!queue.isEmpty()) { 34 | int curr = queue.poll(); 35 | for(int next=1;next<=vertices;next++) { 36 | if(graph[curr][next] == 1 && !visit[next]) { 37 | count++; 38 | visit[next] = true; 39 | queue.add(next); 40 | } 41 | } 42 | } 43 | System.out.println(count); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Algorithm/Solution/2020-12-29/송원석/Main_4358_생태학.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_4358_생태학 { 7 | 8 | public static void main(String[] args) throws Exception{ 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | HashMap map = new HashMap<>(); 11 | int total = 0; 12 | String name = null; 13 | while(true) { 14 | name = br.readLine(); 15 | if(name == null || name.length() == 0) 16 | break; 17 | total++; 18 | map.put(name, map.getOrDefault(name, 0) + 1); 19 | } 20 | 21 | // 정렬을 위해 toArray() 22 | Object[] keys = map.keySet().toArray(); 23 | Arrays.sort(keys); 24 | StringBuilder sb = new StringBuilder(); 25 | 26 | for(Object key: keys) { 27 | double percentage = ((double)map.get(key) / total); 28 | percentage = Math.round((percentage*10000.0 * 100.0))/ 10000.0; 29 | sb.append(key+" " +String.format("%.4f", percentage)).append("\n"); 30 | } 31 | 32 | System.out.println(sb); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /Algorithm/Solution/2020-12-30/박민식/Main_2839_설탕배달.java: -------------------------------------------------------------------------------- 1 | package algo_study; 2 | 3 | import java.util.*; 4 | 5 | public class Main_2839_설탕배달 { 6 | 7 | public static void main(String[] args) { 8 | Scanner sc = new Scanner(System.in); 9 | 10 | int total = sc.nextInt(); 11 | int result = 0; 12 | 13 | while(true) { 14 | if(total % 5 == 0) { 15 | total /= 5; 16 | System.out.println(total + result); 17 | break; 18 | } else if(total == 0) { 19 | System.out.println(result); 20 | break; 21 | } else if(total < 0) { 22 | System.out.println(-1); 23 | break; 24 | } 25 | 26 | total -= 3; 27 | result++; 28 | } 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /Algorithm/Solution/2020-12-30/박민식/Main_5585_거스름돈.java: -------------------------------------------------------------------------------- 1 | package algo_study; 2 | 3 | import java.util.*; 4 | import java.io.*; 5 | 6 | public class Main_5585_거스름돈 { 7 | // 500 , 100, 50, 10, 5, 1 8 | public static void main(String[] args) { 9 | Scanner sc = new Scanner(System.in); 10 | 11 | int money = 1000 - sc.nextInt(); 12 | int change = 0; 13 | 14 | change += money / 500; 15 | money %= 500; 16 | change += money / 100; 17 | money %= 100; 18 | change += money / 50; 19 | money %= 50; 20 | change += money / 10; 21 | money %= 10; 22 | change += money / 5; 23 | money %= 5; 24 | change += money / 1; 25 | money %= 1; 26 | 27 | System.out.println(change); 28 | 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /Algorithm/Solution/2020-12-30/송원석/Main_1783_병든나이트.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_1783_병든나이트 { 7 | 8 | /* 9 | 1) 2칸 위로, 1칸 오른쪽 10 | 2) 1칸 위로, 2칸 오른쪽 11 | 3) 1칸 아래로, 2칸 오른쪽 12 | 4) 2칸 아래로, 1칸 오른쪽 13 | */ 14 | public static void main(String[] args) throws Exception{ 15 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 16 | StringTokenizer st = new StringTokenizer(br.readLine()); 17 | 18 | int N = Integer.parseInt(st.nextToken()); 19 | int M = Integer.parseInt(st.nextToken()); 20 | 21 | int result = 0; 22 | 23 | // N이 1이면 이동 불가 (시작지점만) 24 | if(N == 1) { 25 | result = 1; 26 | } 27 | // N이 2일 떈, 2번,3번 방향으로만 움직일 수 있음 28 | // 절대 4방향 다 움직일 수 없어서 최댓값은 4 29 | else if(N == 2) { 30 | result = Math.min((M+1)/2, 4); 31 | }else if(N>=3){ 32 | // M=7 부터 4방향 다 이동 가능 33 | // 4방향 다 이동한 후에는 y값이 1씩 증가하는 1번,4번 이동을 반복해야 최대값, 즉 M-2개의 칸을 갈 수 있음 34 | if(M < 7) { 35 | result = Math.min(M, 4); 36 | }else { 37 | result = M-2; 38 | } 39 | } 40 | 41 | System.out.println(result); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Algorithm/Solution/2020-12-30/송원석/Main_2839_설탕배달.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | 5 | public class Main_2839_설탕배달 { 6 | 7 | public static void main(String[] args) throws Exception{ 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | int sugar = Integer.parseInt(br.readLine()); 10 | int min = Integer.MAX_VALUE; 11 | 12 | for(int largeBag=0;largeBag<=sugar;largeBag+=5) { 13 | if((sugar-largeBag)%3 == 0) { 14 | int smallBagCount = (sugar-largeBag)/3; 15 | int largeBagCount = largeBag/5; 16 | min = Math.min(min, largeBagCount+ smallBagCount); 17 | } 18 | } 19 | 20 | if(min == Integer.MAX_VALUE) 21 | System.out.println(-1); 22 | else 23 | System.out.println(min); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /Algorithm/Solution/2020-12-30/송원석/Main_5585_거스름돈.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | 5 | public class Main_5585_거스름돈 { 6 | 7 | public static void main(String[] args) throws Exception{ 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | int[] coins = {500, 100, 50, 10, 5 ,1}; 10 | int price = 1000 - Integer.parseInt(br.readLine()); 11 | int count = 0; 12 | 13 | for(int coin : coins) { 14 | if(price/coin > 0) { 15 | count += price/coin; 16 | price %= coin; 17 | } 18 | } 19 | System.out.println(count); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /Algorithm/Solution/2020-12-31/박민식/Main_1057_토너먼트.java: -------------------------------------------------------------------------------- 1 | package algo_study; 2 | 3 | import java.util.*; 4 | import java.io.*; 5 | 6 | public class Main_1057_토너먼트 { 7 | 8 | public static void main(String[] args) throws Exception { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | StringTokenizer st = new StringTokenizer(br.readLine()); 11 | 12 | int N = Integer.parseInt(st.nextToken()); 13 | int kim = Integer.parseInt(st.nextToken()); 14 | int lim = Integer.parseInt(st.nextToken()); 15 | int count = 0; 16 | 17 | while(kim!=lim) { 18 | if(kim%2==0) 19 | kim = kim/2; 20 | else 21 | kim = kim/2 + 1; 22 | if(lim%2==0) 23 | lim = lim/2; 24 | else 25 | lim = lim/2 + 1; 26 | count++; 27 | } 28 | 29 | System.out.println(count); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Algorithm/Solution/2020-12-31/박민식/Main_10819_차이를최대로.java: -------------------------------------------------------------------------------- 1 | package algo_study; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_10819_차이를최대로 { 7 | static int N,max; 8 | static int [] originalArr, randomArr; 9 | static boolean [] Arr_v; 10 | 11 | public static void main(String[] args) throws Exception { 12 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 13 | 14 | N = Integer.parseInt(br.readLine()); 15 | 16 | originalArr = new int [N]; 17 | randomArr = new int [N]; 18 | Arr_v = new boolean [N]; 19 | 20 | StringTokenizer st = new StringTokenizer(br.readLine()); 21 | 22 | for(int i=0;i map = new HashMap<>(); 17 | 18 | for(int i=0;i pq = new PriorityQueue<>(); 26 | int count = 0; 27 | for(String k: map.keySet()) { 28 | if(map.get(k) > 1) { 29 | count++; 30 | pq.offer(k); 31 | } 32 | } 33 | System.out.println(count); 34 | while(!pq.isEmpty()) { 35 | sb.append(pq.poll()+"\n"); 36 | } 37 | System.out.println(sb.toString()); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-05/박민식/Main_9342_염색체.java: -------------------------------------------------------------------------------- 1 | package algo_study; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_9342_염색체 { 7 | 8 | public static void main(String[] args) throws Exception { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | StringBuilder sb = new StringBuilder(); 11 | int N = Integer.parseInt(br.readLine()); 12 | 13 | for(int i=0;i nuguGroup = new ArrayList<>(); 15 | HashSet set = new HashSet<>(); 16 | 17 | for(int i=0;i set = new HashSet<>(); 16 | boolean isGroup = true; 17 | char prevWord = 0; 18 | for(int j=0;j list = new ArrayList<>(); 13 | 14 | for(int i=0;i() { 23 | public int compare(int[] o1, int [] o2) { 24 | if(o1[1] == o2[1]) 25 | return o1[0] - o2[0]; 26 | return o1[1] - o2[1]; 27 | } 28 | }); 29 | 30 | int room = 0; 31 | int currPoint = 0; 32 | 33 | for(int i=0;i trees[i+1]) { 26 | int temp = trees[i]; 27 | trees[i] = trees[i+1]; 28 | trees[i+1] = temp; 29 | print(trees); 30 | } 31 | } 32 | 33 | } 34 | } // end of main 35 | 36 | public static void print(int [] trees) { 37 | for(int i=0;i<5;i++) 38 | System.out.print(trees[i]+" "); 39 | System.out.println(); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-06/송원석/Main_1316_그룹단어체커.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_1316_그룹단어체커 { 7 | 8 | public static void main(String[] args) throws Exception{ 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | int N = Integer.parseInt(br.readLine()); 11 | int count = 0; 12 | 13 | for(int i=0;i set = new HashSet(); 17 | char prev = word.charAt(0); 18 | 19 | for(int j =1;j woods[i+1]) { 41 | swap(i,i+1,woods); 42 | printArray(woods); 43 | } 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-06/송원석/Main_9372_상근이의여행.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_9372_상근이의여행 { 7 | 8 | public static void main(String[] args) throws Exception{ 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | StringBuilder sb = new StringBuilder(); 11 | int T = Integer.parseInt(br.readLine()); 12 | 13 | for(int tc=0;tc { 2 | [...leftSet].forEach(left => { 3 | [...rightSet].forEach(right => { 4 | acc.add(left + right); 5 | acc.add(left - right); 6 | acc.add(left * right); 7 | if (right !== 0) 8 | acc.add(Math.floor(left / right)) 9 | }) 10 | }) 11 | } 12 | 13 | const solution = (N, number) => { 14 | const accumulate = new Array(9).fill(0).map(v => new Set()); 15 | 16 | for (let i = 1; i <= 8; i++) { 17 | const init = '1'.repeat(i) * N; 18 | accumulate[i].add(init); 19 | } 20 | 21 | for (let i = 1; i <= 8; i++) { 22 | for (let j = 1; j < i; j++) { 23 | const leftSet = accumulate[j]; 24 | const rightSet = accumulate[i - j]; 25 | calculation(leftSet, rightSet, accumulate[i]); 26 | } 27 | if (accumulate[i].has(number)) { 28 | return i; 29 | } 30 | } 31 | 32 | return -1; 33 | } 34 | 35 | console.log(solution(5, 12)); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-11/송원석/Programmers_디스크컨트롤러.js: -------------------------------------------------------------------------------- 1 | function solution(jobs) { 2 | let times = 0; 3 | let waiting = []; 4 | 5 | jobs.sort((a, b) => { 6 | if (a[0] === b[0]) 7 | return a[1] - b[1]; 8 | return a[0] - b[0]; 9 | }); 10 | 11 | let jobIndex = 0; 12 | let prevEnd = 0; 13 | let count = 0; 14 | 15 | while (count < jobs.length) { 16 | let isAdd = false; 17 | 18 | while (jobIndex < jobs.length && jobs[jobIndex][0] <= prevEnd) { 19 | waiting.push(jobs[jobIndex++]); 20 | isAdd = true; 21 | } 22 | 23 | if (isAdd) { 24 | waiting.sort((a, b) => { 25 | if (a[1] === b[1]) 26 | return b[0] - a[0] 27 | return b[1] - a[1]; 28 | }); 29 | } 30 | 31 | if (waiting.length === 0) { 32 | prevEnd = jobs[jobIndex][0]; 33 | } else { 34 | const job = waiting.pop(); 35 | prevEnd += job[1]; 36 | times += prevEnd - job[0]; 37 | count++; 38 | } 39 | } 40 | return Math.floor(times / jobs.length); 41 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-11/송원석/Programmers_위장.js: -------------------------------------------------------------------------------- 1 | function solution(clothes) { 2 | let answer = 1; 3 | const map = new Map(); 4 | clothes.forEach(v => map.set(v[1], map.has(v[1]) ? map.get(v[1]) + 1 : 1)); 5 | for (const value of map.values()) { 6 | answer *= value + 1; 7 | } 8 | return answer - 1; 9 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-12/송원석/Bruteforce_카펫.js: -------------------------------------------------------------------------------- 1 | function solution(brown, yellow) { 2 | var answer = []; 3 | const total = brown + yellow; 4 | 5 | let height = 1; 6 | let width = yellow; 7 | let area = (height + 2) * (width + 2); 8 | 9 | while (area != total && height <= width) { 10 | height++; 11 | if (yellow % height != 0 || height > width) continue; 12 | width = yellow / height; 13 | area = (height + 2) * (width + 2); 14 | } 15 | 16 | return [width + 2, height + 2]; 17 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-12/송원석/Greedy_체육복.js: -------------------------------------------------------------------------------- 1 | function solution(n, lost, reserve) { 2 | const students = new Array(n + 1).fill(0); 3 | lost.forEach(v => students[v]--); 4 | reserve.forEach(v => students[v]++); 5 | 6 | reserve.forEach(v => { 7 | if (students[v] <= 0) return; 8 | if (v > 1 && students[v - 1] < 0) { 9 | students[v]--; 10 | students[v - 1]++; 11 | } else if (v < n && students[v + 1] < 0) { 12 | students[v]--; 13 | students[v + 1]++; 14 | } 15 | }) 16 | let count = 0; 17 | for (let i = 1; i <= n; i++) 18 | if (students[i] >= 0) count++; 19 | 20 | return count; 21 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-12/송원석/Heap_이중우선순위큐.js: -------------------------------------------------------------------------------- 1 | function solution(operations) { 2 | const queue = []; 3 | 4 | operations.forEach(el => { 5 | const op = el.split(" "); 6 | if (op[0] === "I") { 7 | queue.push(parseInt(op[1])); 8 | queue.sort((a, b) => a - b); 9 | } else { 10 | if (queue.length === 0) 11 | return; 12 | if (op[1] > 0) 13 | queue.pop(); 14 | else 15 | queue.shift(); 16 | } 17 | }) 18 | if (queue.length === 0) 19 | return [0, 0]; 20 | 21 | return [queue[queue.length - 1], queue[0]]; 22 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-12/송원석/Sort_H-Index.js: -------------------------------------------------------------------------------- 1 | function solution(citations) { 2 | citations.sort((a, b) => a - b); 3 | let index = citations.findIndex((el, idx) => el >= citations.length - idx); 4 | 5 | if (index < 0) 6 | return 0; 7 | 8 | return citations.length - index; 9 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-13/남동해/Main_bj_11441_합구하기.java: -------------------------------------------------------------------------------- 1 | package y2021.m01.d13; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | import java.util.Arrays; 6 | import java.util.StringTokenizer; 7 | 8 | /* 9 | 5 10 | 10 20 30 40 50 11 | 5 12 | 1 3 13 | 2 4 14 | 3 5 15 | 1 5 16 | 4 4 17 | */ 18 | 19 | class Main_bj_11441_합구하기 { 20 | public static int N,M,sum[]; 21 | public static void main(String[] args) throws Exception { 22 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 23 | StringTokenizer st; 24 | StringBuilder sb = new StringBuilder(); 25 | 26 | N = Integer.parseInt(br.readLine()); 27 | sum = new int[N+1]; 28 | st = new StringTokenizer(br.readLine()); 29 | for(int i=1;i<=N;i++) { 30 | sum[i]=sum[i-1] + Integer.parseInt(st.nextToken()); 31 | } 32 | M = Integer.parseInt(br.readLine()); 33 | for(int i=0;i= n) { 27 | right = mid - 1; 28 | if(answer > mid) 29 | answer = mid; 30 | } else { 31 | left = mid + 1; 32 | } 33 | 34 | } 35 | return answer; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-13/송원석/BinarySearch_입국심사.js: -------------------------------------------------------------------------------- 1 | const binarySearch = (times, n) => { 2 | let left = 0; 3 | let right = times[times.length - 1] * n; 4 | let mid = Math.floor((left + right) / 2); 5 | let min = right; 6 | 7 | while (left <= right) { 8 | const count = times.reduce((acc, el) => acc += Math.floor(mid / el), 0); 9 | 10 | if (count >= n) { 11 | min = Math.min(min, mid); 12 | right = mid - 1; 13 | } else { 14 | left = mid + 1; 15 | } 16 | mid = Math.floor((left + right) / 2); 17 | } 18 | return min; 19 | } 20 | 21 | function solution(n, times) { 22 | times.sort((a, b) => a - b); 23 | return binarySearch(times, n); 24 | } 25 | 26 | 27 | // 1. 돈 10원 옷 종류 4, 옷 가격 [] 28 | // 29 | // 2. longest string chain : A B BA BCA BDA BDCA 30 | // 문자열 체인 AB -> A, AB -> B 31 | // 3. html 32 | // 4. 캐러셀 (이미지 넘기기) 33 | // 5. 34 | 35 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-13/송원석/Main_11403_경로찾기.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_11403_경로찾기 { 7 | public static void main(String[] args) throws Exception{ 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | int N = Integer.parseInt(br.readLine()); 10 | boolean[][] graph = new boolean[N][N]; 11 | for(int i=0;i { 6 | const N = parseInt(inputs[0]); 7 | const arr = new Array(N + 1); 8 | arr[0] = 0; 9 | 10 | inputs[1].split(" ").forEach((el, idx) => { 11 | arr[idx + 1] = arr[idx] + parseInt(el); 12 | }) 13 | const answer = []; 14 | const M = inputs[2]; 15 | for (let i = 0; i < M; i++) { 16 | const range = inputs[3 + i].split(" "); 17 | answer.push(arr[range[1]] - arr[range[0] - 1]) 18 | } 19 | 20 | console.log(answer.join("\n")); 21 | } 22 | 23 | Main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-14/남동해/CircleQueue.java: -------------------------------------------------------------------------------- 1 | package y2021.m01.d14; 2 | 3 | public class CircleQueue { 4 | private int rear=0; 5 | private int front=0; 6 | private int queueSize=10001; 7 | private int[] queue = new int[queueSize]; 8 | 9 | private void enQueue(int a) { 10 | if(isFull()) { 11 | System.out.println("ERROR-overflow"); 12 | return; 13 | } 14 | rear=(rear+1)%queueSize; 15 | queue[rear]=a; 16 | } 17 | private int deQueue() { 18 | if(isEmpty()) { 19 | System.out.println("ERROR-underflow"); 20 | return -Integer.MAX_VALUE; 21 | } 22 | front=(front+1)%queueSize; 23 | int temp = queue[front]; 24 | return temp; 25 | } 26 | 27 | private boolean isEmpty() { 28 | if(rear==front) { 29 | return true; 30 | }else { 31 | return false; 32 | } 33 | } 34 | private boolean isFull() { 35 | if((rear+1)%queueSize>=front) { 36 | return true; 37 | }else { 38 | return false; 39 | } 40 | } 41 | 42 | public static void main(String[] args) { 43 | CircleQueue q = new CircleQueue(); 44 | q.enQueue(1); 45 | q.enQueue(2); 46 | q.enQueue(3); 47 | System.out.println(q.deQueue()); 48 | System.out.println(q.deQueue()); 49 | System.out.println(q.deQueue()); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-14/남동해/QueueTest.java: -------------------------------------------------------------------------------- 1 | package y2021.m01.d14; 2 | 3 | public class QueueTest { 4 | private int rear=-1; 5 | private int front=-1; 6 | private int queueSize=10001; 7 | private int[] queue = new int[queueSize]; 8 | 9 | private void enQueue(int a) { 10 | if(isFull()) { 11 | System.out.println("ERROR-overflow"); 12 | return; 13 | } 14 | rear++; 15 | queue[rear]=a; 16 | } 17 | private int deQueue() { 18 | if(isEmpty()) { 19 | System.out.println("ERROR-underflow"); 20 | return -Integer.MAX_VALUE; 21 | } 22 | front++; 23 | int temp = queue[front]; 24 | return temp; 25 | } 26 | 27 | private boolean isEmpty() { 28 | if(rear==front) { 29 | return true; 30 | }else { 31 | return false; 32 | } 33 | } 34 | private boolean isFull() { 35 | if(rear>=queueSize-1) { 36 | return true; 37 | }else { 38 | return false; 39 | } 40 | } 41 | 42 | public static void main(String[] args) { 43 | QueueTest q = new QueueTest(); 44 | q.enQueue(1); 45 | q.enQueue(2); 46 | q.enQueue(3); 47 | System.out.println(q.deQueue()); 48 | System.out.println(q.deQueue()); 49 | System.out.println(q.deQueue()); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-14/송원석/MergeSort.java: -------------------------------------------------------------------------------- 1 | package CSstudy; 2 | 3 | import java.util.Arrays; 4 | 5 | public class MergeSort { 6 | public static void merge(int[] array, int left, int mid, int right) { 7 | int[] leftArray = Arrays.copyOfRange(array, left, mid+1); 8 | int[] rightArray = Arrays.copyOfRange(array, mid, right+1); 9 | 10 | int leftIdx = 0; 11 | int rightIdx = 0; 12 | 13 | for(int i=left;i<=right;i++) { 14 | if(rightIdx >= rightArray.length || leftArray[leftIdx] < rightArray[rightIdx]) { 15 | array[i] = leftArray[leftIdx++]; 16 | }else{ 17 | array[i] = rightArray[rightIdx++]; 18 | } 19 | } 20 | } 21 | 22 | public static void mergeSort(int[] array, int left, int right) { 23 | if(left >= right) return; 24 | 25 | int mid = (left+right)/2; 26 | 27 | mergeSort(array, left, mid); 28 | mergeSort(array, mid+1, right); 29 | 30 | merge(array, left, mid, right); 31 | 32 | } 33 | 34 | public static void main(String[] args) { 35 | int[] array = {5,3,9,4,1,6,2,7}; 36 | mergeSort(array, 0, array.length-1); 37 | 38 | System.out.println(Arrays.toString(array)); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-14/송원석/MergeSort.js: -------------------------------------------------------------------------------- 1 | const merge = (array, left, mid, right) => { 2 | const leftArray = array.slice(left, mid + 1); 3 | const rightArray = array.slice(mid + 1, right + 1); 4 | let leftIndex = 0; 5 | let rightIndex = 0; 6 | for (let i = left; i <= right; i++) { 7 | if (rightIndex >= rightArray.length || leftArray[leftIndex] < rightArray[rightIndex]) { 8 | array[i] = leftArray[leftIndex++]; 9 | } else { 10 | array[i] = rightArray[rightIndex++]; 11 | } 12 | } 13 | } 14 | 15 | 16 | const mergeSort = (array, left, right) => { 17 | if (left < right) { 18 | const mid = Math.floor((left + right) / 2); 19 | mergeSort(array, left, mid); 20 | mergeSort(array, mid + 1, right); 21 | merge(array, left, mid, right); 22 | } 23 | } 24 | 25 | 26 | // const array = [3, 2, 1, 6, 10, 21]; 27 | const array = [5, 3, 8, 4, 9, 1, 6, 2, 7] 28 | mergeSort(array, 0, array.length - 1); 29 | 30 | console.log(array); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-14/송원석/Queue_stack.js: -------------------------------------------------------------------------------- 1 | class Queue { 2 | constructor() { 3 | this.enQueueStack = []; 4 | this.deQueueStack = []; 5 | } 6 | 7 | add(item) { 8 | this.enQueueStack.push(item); 9 | } 10 | 11 | poll() { 12 | if (this.deQueueStack.length === 0) { 13 | while (this.enQueueStack.length > 0) { 14 | this.deQueueStack.push(this.enQueueStack.pop()); 15 | } 16 | } 17 | return this.deQueueStack.pop(); 18 | } 19 | } 20 | 21 | 22 | const queue = new Queue(); 23 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-14/송원석/QuickSort.java: -------------------------------------------------------------------------------- 1 | package CSstudy; 2 | 3 | import java.util.Arrays; 4 | 5 | public class QuickSort { 6 | public static void swap(int[] array, int a, int b) { 7 | int temp = array[a]; 8 | array[a] = array[b]; 9 | array[b] = temp; 10 | } 11 | 12 | public static int partition(int[] array, int left, int right) { 13 | int pivot = array[left]; 14 | int low = left+1; 15 | int high = right; 16 | 17 | while(low < high) { 18 | while(array[low] < pivot) low++; 19 | while(low <= high && array[high] > pivot) high--; 20 | 21 | if(low < high) { 22 | swap(array,low,high); 23 | } 24 | } 25 | 26 | swap(array,left, high); 27 | 28 | return high; 29 | } 30 | 31 | public static void quickSort(int[] array, int left, int right) { 32 | if(left >= right) return; 33 | 34 | int pivot = partition(array, left, right); 35 | 36 | quickSort(array, left, pivot-1); 37 | quickSort(array, pivot+1, right); 38 | } 39 | 40 | public static void main(String[] args) { 41 | int[] array = {5,3,9,4,1,6,2,7}; 42 | quickSort(array, 0, array.length-1); 43 | 44 | System.out.println(Arrays.toString(array)); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-14/송원석/QuickSort.js: -------------------------------------------------------------------------------- 1 | const swap = (array, a, b) => { 2 | const temp = array[a]; 3 | array[a] = array[b]; 4 | array[b] = temp; 5 | } 6 | 7 | const partition = (start, end, array) => { 8 | const pivot = array[start]; 9 | 10 | let low = start + 1; 11 | let high = end; 12 | 13 | while (low <= high) { 14 | while (array[low] < pivot) low++; 15 | while (high >= low && array[high] > pivot) high--; 16 | 17 | if (low < high) 18 | swap(array, low, high); 19 | } 20 | 21 | swap(array, start, high) 22 | return high; 23 | } 24 | 25 | const quickSort = (start, end, array) => { 26 | if (start >= end) return; 27 | 28 | const pivot = partition(start, end, array); 29 | quickSort(start, pivot - 1, array); 30 | quickSort(pivot + 1, end, array); 31 | } 32 | 33 | // const array = [3, 2, 1, 6, 10, 21]; 34 | const array = [5, 3, 8, 4, 9, 1, 6, 2, 7] 35 | quickSort(0, array.length - 1, array); 36 | 37 | console.log(array); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-14/송원석/Stack_Array.js: -------------------------------------------------------------------------------- 1 | class Stack { 2 | #data; 3 | #top; 4 | constructor() { 5 | this.#data = new Array(10); 6 | this.#top = -1; 7 | } 8 | 9 | push(item) { 10 | if (this.isEmpty()) { 11 | this.resize(); 12 | } 13 | this.#data[++this.#top] = item; 14 | } 15 | 16 | pop() { 17 | if (this.#top == -1) 18 | return undefined; 19 | const item = this.#data[this.#top--]; 20 | return item; 21 | } 22 | 23 | isEmpty() { 24 | if (this.#top + 1 === this.#data.length) 25 | return true; 26 | 27 | return false; 28 | } 29 | 30 | size() { 31 | return this.#top + 1; 32 | } 33 | 34 | resize() { 35 | const newArray = new Array(this.#data.length); 36 | this.#data = this.#data.concat(newArray); 37 | } 38 | 39 | peek() { 40 | if (this.isEmpty()) 41 | return undefined; 42 | return this.#data[this.#top]; 43 | } 44 | } 45 | 46 | const stack = new Stack(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-15/남동해/Main_bj_1654_랜선자르기.java: -------------------------------------------------------------------------------- 1 | package y2021.m01.d15; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | import java.util.StringTokenizer; 6 | 7 | /* 8 | 4 11 9 | 802 10 | 743 11 | 457 12 | 539 13 | */ 14 | 15 | class Main_bj_1654_랜선자르기 { 16 | public static void main(String[] args) throws Exception { 17 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 18 | StringTokenizer st = new StringTokenizer(br.readLine()); 19 | int K = Integer.parseInt(st.nextToken()); 20 | int N = Integer.parseInt(st.nextToken()); 21 | long max = 0; 22 | long min = 1; 23 | int[] lan = new int[K]; 24 | for(int i=0;imax) { 27 | max = lan[i]; 28 | } 29 | } 30 | 31 | long mid = 0; 32 | while(max>=min) { 33 | mid = (min+max)/2; 34 | long count = 0; 35 | for(int i=0;i=N) { 39 | min = mid+1; 40 | }else { 41 | max = mid-1; 42 | } 43 | } 44 | System.out.println(max); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-15/남동해/Solution_pro_깊이너비우선탐색_타겟넘버.java: -------------------------------------------------------------------------------- 1 | package y2021.m01.d15; 2 | 3 | /* 4 | 풀이시간 : 5 | 시간 : 6 | 메모리 : 7 | - 8 | - 9 | */ 10 | 11 | public class Solution_pro_깊이너비우선탐색_타겟넘버 { 12 | public static void main(String[] args) throws Exception { 13 | int numbers[] = {1,1,1,1,1}; 14 | int target = 3; 15 | 16 | System.out.println(solution(numbers, target)); 17 | } 18 | public static int solution(int[] numbers, int target) { 19 | int answer = 0; 20 | int sum = 0; 21 | answer = dfs(0,sum,numbers,numbers.length,target); 22 | return answer; 23 | } 24 | 25 | private static int dfs(int count,int sum,int[] numbers,int K, int T) { 26 | if(count==K) { 27 | if(sum==T) { 28 | return 1; 29 | }else { 30 | return 0; 31 | } 32 | } 33 | int temp = 0; 34 | temp+=dfs(count+1, sum+numbers[count], numbers, K, T); 35 | temp+=dfs(count+1, sum-numbers[count], numbers, K, T); 36 | return temp; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-15/박민식/Main_1654_랜선자르기.java: -------------------------------------------------------------------------------- 1 | package a2021; 2 | 3 | import java.util.*; 4 | import java.io.*; 5 | 6 | public class Main_1654_랜선자르기 { 7 | static int [] line; 8 | public static void main(String[] args) throws Exception { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | StringTokenizer st = new StringTokenizer(br.readLine()); 11 | 12 | int K = Integer.parseInt(st.nextToken()); 13 | int N = Integer.parseInt(st.nextToken()); 14 | 15 | line = new int [K]; 16 | 17 | for(int i=0;i= N) 34 | min = mid + 1; 35 | else // 아니라면 max값 감소 36 | max = mid - 1; 37 | 38 | mid = (min+max) / 2; 39 | } 40 | 41 | System.out.println(max); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-15/박민식/Main_2210_숫자판점프.java: -------------------------------------------------------------------------------- 1 | package a2021; 2 | 3 | import java.util.*; 4 | import java.io.*; 5 | 6 | public class Main_2210_숫자판점프 { 7 | static String [][] board; 8 | static HashSet set; 9 | static int [] di = {-1,1,0,0}, dj = {0,0,-1,1}; 10 | 11 | public static void makeNumber(int x, int y, int count, String currNumber) { 12 | if(count==6) { 13 | set.add(currNumber); 14 | return; 15 | } 16 | 17 | for(int d=0;d4 || nj>4) continue; 21 | makeNumber(ni,nj,count+1,currNumber+board[ni][nj]); 22 | } 23 | } 24 | 25 | public static void main(String[] args) throws Exception { 26 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 27 | board = new String [5][5]; 28 | set = new HashSet<>(); 29 | StringTokenizer st; 30 | 31 | for(int i=0;i<5;i++) { 32 | st = new StringTokenizer(br.readLine()); 33 | for(int j=0;j<5;j++) { 34 | board[i][j] = st.nextToken(); 35 | } 36 | } 37 | 38 | for(int i=0;i<5;i++) 39 | for(int j=0;j<5;j++) 40 | makeNumber(i,j,0,""); 41 | 42 | System.out.println(set.size()); 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-15/박민식/Programmers_타겟넘버.java: -------------------------------------------------------------------------------- 1 | package a2021; 2 | 3 | public class Programmers_타겟넘버 { 4 | static int answer; 5 | 6 | public static void main(String[] args) { 7 | int target = 3; 8 | int [] numbers = {1,1,1,1,1}; 9 | System.out.println(solution(numbers, target)); 10 | } 11 | 12 | public static int solution(int [] numbers, int target) { 13 | answer = 0; 14 | findTarget(numbers, target, 0); 15 | return answer; 16 | } 17 | 18 | public static void findTarget(int [] numbers, int target, int tryNum) { 19 | if(tryNum == numbers.length) { 20 | int result = 0; 21 | for(int i=0;i { 2 | if (depth === numbers.length) { 3 | return (acc === target) ? 1 : 0; 4 | } 5 | return dfs(numbers, target, acc + numbers[depth], depth + 1) 6 | + dfs(numbers, target, acc - numbers[depth], depth + 1) 7 | } 8 | 9 | function solution(numbers, target) { 10 | return dfs(numbers, target, 0, 0); 11 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-15/송원석/Main_1654_랜선자르기.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_1654_랜선자르기 { 7 | 8 | public static long binarySearch(long left, long right, int[] array, int target) { 9 | long result = 0; 10 | 11 | while(left <= right) { 12 | long mid = (left+right)/2; 13 | int sum = 0; 14 | for(int num : array) { 15 | sum += num/mid; 16 | } 17 | 18 | if(sum >= target) { 19 | result = mid; 20 | left = mid+1; 21 | }else { 22 | right = mid-1; 23 | } 24 | } 25 | 26 | return result; 27 | } 28 | 29 | public static void main(String[] args) throws Exception{ 30 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 31 | StringTokenizer st = new StringTokenizer(br.readLine()); 32 | 33 | int K = Integer.parseInt(st.nextToken()); 34 | int N = Integer.parseInt(st.nextToken()); 35 | 36 | int[] wires = new int[K]; 37 | long total = 0; 38 | 39 | for(int i=0;i { 6 | const line = inputs[0].split(" "); 7 | const K = parseInt(line[0]); 8 | const N = parseInt(line[1]); 9 | const wireArray = []; 10 | 11 | let total = 0; 12 | 13 | for (let i = 1; i <= K; i++) { 14 | const wire = parseInt(inputs[i]); 15 | wireArray.push(wire); 16 | total += wire; 17 | } 18 | 19 | let min = 1; 20 | let max = Math.floor(total / N); 21 | let answer = 0; 22 | 23 | const binarySearch = (left, right) => { 24 | while (left <= right) { 25 | const mid = Math.floor((left + right) / 2); 26 | const count = wireArray.reduce((acc, el) => acc += Math.floor(el / mid), 0); 27 | if (count >= N) { 28 | answer = mid; 29 | left = mid + 1; 30 | } else { 31 | right = mid - 1; 32 | } 33 | } 34 | } 35 | 36 | binarySearch(min, max); 37 | 38 | console.log(answer); 39 | } 40 | 41 | Main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-15/송원석/Main_2210_숫자판점프.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | // const inputs = fs.readFileSync('./dev/stdin').toString().split("\n"); 3 | const inputs = fs.readFileSync('./BOJ/input/input.txt').toString().split('\r\n'); 4 | 5 | const Main = () => { 6 | const set = new Set(); 7 | const dx = [-1, 1, 0, 0], dy = [0, 0, -1, 1]; 8 | const board = inputs.map(el => el.split(" ")); 9 | 10 | const dfs = (x, y, total) => { 11 | if (total.length === 6) { 12 | set.add(total); 13 | return; 14 | } 15 | for (let dir = 0; dir < dx.length; dir++) { 16 | const nx = x + dx[dir]; 17 | const ny = y + dy[dir]; 18 | 19 | if (nx < 0 || nx >= 5 || ny < 0 || ny >= 5) 20 | continue; 21 | 22 | dfs(nx, ny, total + board[nx][ny]); 23 | } 24 | } 25 | 26 | for (let i = 0; i < 5; i++) { 27 | for (let j = 0; j < 5; j++) { 28 | dfs(i, j, board[i][j]); 29 | } 30 | } 31 | 32 | console.log(set.size); 33 | } 34 | 35 | Main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-15/송원석/Main_2447_별찍기10.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | // const inputs = fs.readFileSync('./dev/stdin').toString().split("\n"); 3 | const inputs = fs.readFileSync('./BOJ/input/input.txt').toString().split('\r\n'); 4 | 5 | const drawEmpty = (board, startX, startY, size) => { 6 | for (let x = startX; x < startX + size; x++) { 7 | for (let y = startY; y < startY + size; y++) { 8 | board[x][y] = ' '; 9 | } 10 | } 11 | } 12 | 13 | const partition = (board, startX, startY, N) => { 14 | if (N === 1) { 15 | board[startX][startY] = '*'; 16 | return; 17 | } 18 | 19 | for (let x = startX; x < startX + N; x += N / 3) { 20 | for (let y = startY; y < startY + N; y += N / 3) { 21 | if (x === startX + N / 3 && y === startY + N / 3) { 22 | drawEmpty(board, x, y, N / 3); 23 | continue; 24 | } 25 | partition(board, x, y, N / 3); 26 | } 27 | } 28 | } 29 | 30 | 31 | const Main = () => { 32 | const N = parseInt(inputs[0]); 33 | const board = new Array(N).fill(0).map(el => new Array(N)); 34 | 35 | partition(board, 0, 0, N); 36 | 37 | const astarisk = board.reduce((acc, el) => acc += el.join('') + "\n", '') 38 | 39 | console.log(astarisk); 40 | } 41 | 42 | Main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-18/남동해/Main_bj_1392_노래악보.java: -------------------------------------------------------------------------------- 1 | package y2021.m01.d18; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | import java.util.StringTokenizer; 6 | 7 | /* 8 | 3 5 9 | 2 10 | 1 11 | 3 12 | 2 13 | 3 14 | 4 15 | 0 16 | 1 17 | */ 18 | 19 | class Main_bj_1392_노래악보 { 20 | public static void main(String[] args) throws Exception { 21 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 22 | StringTokenizer st = new StringTokenizer(br.readLine()); 23 | int N = Integer.parseInt(st.nextToken()); 24 | int Q = Integer.parseInt(st.nextToken()); 25 | 26 | int[] B = new int[N]; 27 | int size = 0; 28 | for(int i=0;i musicStudy = new ArrayList<>(); 20 | int notePage = 1; 21 | int idx = 0; 22 | while(idx < N) { 23 | musicStudy.add(notePage); 24 | note[idx]--; 25 | if(note[idx]==0) { 26 | notePage++; 27 | idx++; 28 | } 29 | } 30 | 31 | StringBuilder sb = new StringBuilder(); 32 | 33 | for(int i=0;i { 6 | const numbers = inputs[1].split(" ").map(el => parseInt(el)).sort((a, b) => a - b); 7 | 8 | let total = 0 9 | numbers.reduce((acc, el) => { 10 | acc += el; 11 | total += acc; 12 | return acc; 13 | }, 0); 14 | 15 | console.log(total); 16 | } 17 | 18 | Main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-18/송원석/BOJ_1392_노래악보.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const inputs = fs.readFileSync('./BOJ/input/input.txt').toString().trim().split("\r\n"); 3 | // const inputs = fs.readFileSync('./dev/stdin').toString().split("\n"); 4 | 5 | 6 | function main() { 7 | const [N, Q] = inputs.shift().split(" "); 8 | const sheets = [...inputs.slice(0, N)].map(el => Number(el)); 9 | const questions = [...inputs.slice(N)].map(el => Number(el)); 10 | const times = [0]; 11 | for (let i = 0; i < sheets.length; i++) { 12 | times.push(times[i] + sheets[i]) 13 | } 14 | let answer = ''; 15 | for (let i = 0; i < questions.length; i++) { 16 | for (let idx = 1; idx < times.length; idx++) { 17 | if (questions[i] < times[idx]) { 18 | answer += (idx + '\n') 19 | break; 20 | } 21 | } 22 | } 23 | 24 | 25 | console.log(answer); 26 | } 27 | 28 | main(); 29 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-18/송원석/Main_1392_노래악보.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_1392_노래악보 { 7 | 8 | public static void main(String[] args) throws Exception{ 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | StringTokenizer st = new StringTokenizer(br.readLine()); 11 | 12 | int N = Integer.parseInt(st.nextToken()); 13 | int Q = Integer.parseInt(st.nextToken()); 14 | 15 | int[] sheets = new int[N]; 16 | int[] times = new int[N+1]; 17 | 18 | for(int i=0;i= target) { 19 | result = mid; 20 | left = mid+1; 21 | }else { 22 | right = mid-1; 23 | } 24 | } 25 | 26 | return result; 27 | } 28 | 29 | public static void main(String[] args) throws Exception{ 30 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 31 | StringTokenizer st = new StringTokenizer(br.readLine()); 32 | 33 | int K = Integer.parseInt(st.nextToken()); 34 | int N = Integer.parseInt(st.nextToken()); 35 | 36 | int[] wires = new int[K]; 37 | long total = 0; 38 | 39 | for(int i=0;i>i)&1)==1) { 17 | count++; 18 | } 19 | } 20 | System.out.println(count); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-20/남동해/Main_bj_1946_신입사원_hint.java: -------------------------------------------------------------------------------- 1 | package y2021.m01.d20; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | import java.util.StringTokenizer; 6 | 7 | /* 8 | 2 9 | 5 10 | 3 2 11 | 1 4 12 | 4 1 13 | 2 3 14 | 5 5 15 | 7 16 | 3 6 17 | 7 3 18 | 4 2 19 | 1 4 20 | 5 7 21 | 2 5 22 | 6 1 23 | */ 24 | 25 | class Main_bj_1946_신입사원_hint { 26 | public static void main(String[] args) throws Exception { 27 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 28 | StringTokenizer st; 29 | int T = Integer.parseInt(br.readLine()); 30 | for(int tc=0;tcmin) { 42 | continue; 43 | }else { 44 | min=table[i]; 45 | count++; 46 | } 47 | } 48 | System.out.println(count); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-20/박민식/Main_1094_막대기.java: -------------------------------------------------------------------------------- 1 | package a2021; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_1094_막대기 { 7 | 8 | public static void main(String[] args) throws Exception { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | int N = Integer.parseInt(br.readLine()); 11 | int count = 0; 12 | // while문으로 나머지가 1인 경우 비트마스크 방식으로 검출한 같은방식과 같이 풀이한 것 13 | 14 | // while(N>0) { 15 | // if(N%2==1) 16 | // count++; 17 | // N /= 2; 18 | // } 19 | // System.out.println(count); 20 | 21 | // 비트마스크 22 | for(int i=0;i<7;i++) { 23 | // 1< 0) 26 | count++; 27 | } 28 | System.out.println(count); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-20/박민식/Main_1946_신입사원.java: -------------------------------------------------------------------------------- 1 | package a2021; 2 | 3 | import java.util.*; 4 | import java.io.*; 5 | 6 | public class Main_1946_신입사원 { 7 | 8 | public static void main(String[] args) throws Exception { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | int tc = Integer.parseInt(br.readLine()); 11 | for(int t=0;t pq = new PriorityQueue<>(new Comparator() { 14 | public int compare(int [] o1, int [] o2) { 15 | return o1[0]-o2[0]; 16 | } 17 | }); 18 | for(int i=0;i curr[1]) { 31 | interviewScore = curr[1]; 32 | count++; 33 | } 34 | } 35 | System.out.println(count); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-20/송원석/Main_1094_막대기.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | 5 | public class Main_1094_막대기 { 6 | 7 | public static void main(String[] args) throws Exception{ 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | int N = Integer.parseInt(br.readLine()); 10 | int count = 0; 11 | 12 | 13 | for(int i=0;i<7;i++) { 14 | if((N & (1< 0) { 15 | count++; 16 | } 17 | } 18 | System.out.println(count); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-20/송원석/Main_12865_평범한배낭.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.util.*; 4 | import java.io.*; 5 | 6 | public class Main_12865_평범한배낭 { 7 | 8 | public static void main(String[] args) throws Exception{ 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | StringTokenizer st = new StringTokenizer(br.readLine()); 11 | 12 | int N = Integer.parseInt(st.nextToken()); 13 | int K = Integer.parseInt(st.nextToken()); 14 | 15 | int[] DP = new int[K+1]; 16 | 17 | for(int i=0;i= W;j--) { 28 | DP[j] = Math.max(DP[j], DP[j-W] + V); 29 | } 30 | } 31 | System.out.println(DP[K]); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-20/송원석/Main_1946_신입사원.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_1946_신입사원 { 7 | 8 | public static void main(String[] args) throws Exception{ 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | int T = Integer.parseInt(br.readLine()); 11 | StringBuilder sb = new StringBuilder(); 12 | for(int tc=0;tc interview[i]) { 27 | worst = interview[i]; 28 | count++; 29 | } 30 | } 31 | sb.append(count).append("\n"); 32 | } 33 | System.out.println(sb); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-21/남동해/Main_bj_16917_양념반후라이드반.java: -------------------------------------------------------------------------------- 1 | package y2021.m01.d21; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | import java.util.StringTokenizer; 6 | /* 7 | 1500 2000 1600 3 2 8 | */ 9 | 10 | 11 | class Main_bj_16917_양념반후라이드반 { 12 | public static void main(String[] args) throws Exception { 13 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 14 | StringTokenizer st = new StringTokenizer(br.readLine()); 15 | int A = Integer.parseInt(st.nextToken()); 16 | int B = Integer.parseInt(st.nextToken()); 17 | int C = Integer.parseInt(st.nextToken()); 18 | int X = Integer.parseInt(st.nextToken()); 19 | int Y = Integer.parseInt(st.nextToken()); 20 | int min = 0; 21 | if(A+B>2*C) { 22 | if(X>Y) { 23 | min = 2*C*Y + (X-Y)*A; 24 | if(min>C*X*2) { 25 | min = C*X*2; 26 | } 27 | }else { 28 | min = 2*C*X + (Y-X)*B; 29 | if(min>C*Y*2) { 30 | min = C*Y*2; 31 | } 32 | } 33 | }else { 34 | min = A*X + B*Y; 35 | } 36 | System.out.println(min); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-21/박민식/Main_9251_LCS.java: -------------------------------------------------------------------------------- 1 | package a2021; 2 | 3 | import java.util.*; 4 | import java.io.*; 5 | 6 | public class Main_9251_LCS { 7 | 8 | public static void main(String[] args) throws Exception { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | 11 | String first = br.readLine(); 12 | String second = br.readLine(); 13 | 14 | int firstSize = first.length(); 15 | int secondSize = second.length(); 16 | 17 | int [][] board = new int [firstSize+1][secondSize+1]; 18 | 19 | for(int i=1;i { 6 | inputs.shift(); 7 | const students = inputs.map(el => { 8 | const info = el.split(" "); 9 | return { 10 | name: info[0], 11 | korean: +info[1], 12 | english: +info[2], 13 | math: +info[3] 14 | } 15 | }); 16 | 17 | students.sort((a, b) => { 18 | if (a.korean === b.korean) { 19 | if (a.english === b.english) { 20 | if (a.math === b.math) { 21 | if (a.name < b.name) { 22 | return -1; 23 | } else { 24 | return 1; 25 | } 26 | } 27 | return b.math - a.math 28 | } 29 | return a.english - b.english 30 | } 31 | return b.korean - a.korean; 32 | }) 33 | 34 | let answer = students.reduce((acc, el) => acc += el.name + "\n", ""); 35 | 36 | console.log(answer); 37 | } 38 | 39 | Main() -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-21/송원석/BOJ_16917_양념반후라이드반.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | // const inputs = fs.readFileSync('./dev/stdin').toString().split('\n'); 3 | const inputs = fs.readFileSync('./BOJ/input/input.txt').toString().split('\r\n'); 4 | 5 | const Main = () => { 6 | let [A, B, C, X, Y] = inputs[0].split(" ").map(el => Number(el)); 7 | 8 | let answer = 0; 9 | 10 | if (C * 2 <= A + B) { 11 | if (X > Y) { 12 | answer += (C * 2) * Y; 13 | X -= Y; 14 | Y = 0; 15 | } else { 16 | answer += (C * 2) * X; 17 | Y -= X; 18 | X = 0; 19 | } 20 | } 21 | 22 | if (X > 0) { 23 | if (C * 2 < A) 24 | answer += (C * 2) * X; 25 | else 26 | answer += A * X; 27 | } 28 | 29 | if (Y > 0) { 30 | if (C * 2 < B) 31 | answer += (C * 2) * Y; 32 | else 33 | answer += B * Y; 34 | } 35 | 36 | 37 | console.log(answer); 38 | } 39 | 40 | 41 | Main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-22/남동해/Solution_채널톡코테1.java: -------------------------------------------------------------------------------- 1 | package y2021.m01.d22; 2 | 3 | import java.util.Arrays; 4 | 5 | public class Solution_채널톡코테1 { 6 | public static void main(String[] args) throws Exception { 7 | // int matrix[][] = {{1,19,20,8,25},{21,4,3,17,24},{12,5,6,16,15},{11,18,10,9,23},{7,13,14,22,2}}; 8 | int matrix[][] = {{4,2,9},{1,3,5},{6,8,7}}; 9 | System.out.println(solution(matrix)); 10 | } 11 | public static boolean visit[][]; 12 | public static int solution(int[][] matrix) { 13 | int answer = 0; 14 | int N = matrix.length; 15 | visit = new boolean[N][N]; 16 | for(int i=0;i set = new HashSet<>(); 15 | 16 | for(int i=0;i iter = set.iterator(); 26 | int index=0; 27 | while(iter.hasNext()) { 28 | answer[index]=iter.next(); 29 | index++; 30 | } 31 | Arrays.sort(answer); 32 | return answer; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-22/남동해/Solution_채널톡코테5.java: -------------------------------------------------------------------------------- 1 | package y2021.m01.d22; 2 | 3 | public class Solution_채널톡코테5 { 4 | public static void main(String[] args) throws Exception { 5 | // int N = 5; 6 | // int trees[][] = {{4, 3}, {3, 1}, {2, 2}, {1, 4}}; 7 | int N = 5; 8 | int trees[][] = {{3, 3}, {2, 2}, {1, 1}}; 9 | System.out.println(solution(N, trees)); 10 | } 11 | public static int di[] = {0,0,-1,1}, dj[]= {-1,1,0,0}; 12 | public static int solution(int N, int[][] trees) { 13 | int answer = 0; 14 | boolean[][] map = new boolean[N][N]; 15 | for(int i=0;i=0&&nj>=0&&ni al = new ArrayList<>(); 14 | for(int i=0;i new Array(N)); 7 | let answer = 0; 8 | 9 | for (let i = 0; i < N; i++) { 10 | for (let j = 0; j < N; j++) { 11 | colArray[j][i] = matrix[i][j]; 12 | } 13 | } 14 | 15 | for (let i = 0; i < N; i++) { 16 | colArray[i].sort((a, b) => a - b); 17 | matrix[i].sort((a, b) => a - b); 18 | set.add(matrix[i][medianIndex]); 19 | } 20 | 21 | for (let i = 0; i < N; i++) { 22 | if (set.has(colArray[i][medianIndex])) { 23 | answer++; 24 | } 25 | } 26 | 27 | return answer; 28 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-22/송원석/solution2.js: -------------------------------------------------------------------------------- 1 | function equals(arrA, arrB) { 2 | for (let i = 0; i < arrA.length; i++) { 3 | if (arrA[i] !== arrB[i]) { 4 | return false; 5 | } 6 | } 7 | return true; 8 | } 9 | 10 | function solution(arrA, arrB) { 11 | if (arrA.length !== arrB.length) { 12 | return false; 13 | } 14 | 15 | if (equals(arrA, arrB)) 16 | return true; 17 | 18 | for (let i = 0; i < arrA.length - 1; i++) { 19 | arrB.push(arrB.shift()); 20 | if (equals(arrA, arrB)) { 21 | return true; 22 | } 23 | } 24 | return false; 25 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-22/송원석/solution3.js: -------------------------------------------------------------------------------- 1 | function solution(card) { 2 | const set = new Set(); 3 | card.forEach(el => { 4 | if (set.has(el)) { 5 | set.delete(el); 6 | } else { 7 | set.add(el); 8 | } 9 | }) 10 | return [...set].sort((a, b) => a - b); 11 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-22/송원석/solution4.js: -------------------------------------------------------------------------------- 1 | function findRoot(tree) { 2 | for (let idx = 1; idx < tree.length; idx++) { 3 | if (tree[idx].parent === idx) 4 | return tree[idx]; 5 | } 6 | } 7 | 8 | function getSkillPoint(skill) { 9 | if (skill.child.length === 0) { 10 | skill.sp = 1; 11 | return skill.sp; 12 | } 13 | 14 | let mySP = 0; 15 | for (let i = 0; i < skill.child.length; i++) { 16 | mySP += getSkillPoint(skill.child[i]); 17 | } 18 | 19 | skill.sp = mySP; 20 | return skill.sp; 21 | } 22 | 23 | function solution(total_sp, skills) { 24 | const tree = new Array(skills.length + 2).fill(0).map((el, idx) => { 25 | return { 26 | parent: idx, 27 | child: [], 28 | sp: 0 29 | } 30 | }); 31 | 32 | skills.forEach(el => { 33 | tree[el[1]].parent = tree[el[0]]; 34 | tree[el[0]].child.push(tree[el[1]]); 35 | }); 36 | 37 | const root = findRoot(tree); 38 | getSkillPoint(root); 39 | 40 | const spCount = tree.reduce((acc, skill) => { 41 | return acc += skill.sp; 42 | }, 0) 43 | 44 | const answer = []; 45 | const spPerCount = total_sp / spCount; 46 | 47 | for (let i = 1; i < tree.length; i++) { 48 | answer.push(tree[i].sp * spPerCount); 49 | } 50 | 51 | return answer; 52 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-22/송원석/solution5.js: -------------------------------------------------------------------------------- 1 | function solution(N, trees) { 2 | trees.sort((a, b) => a[1] - b[1]); 3 | let answer = 1 4 | let prevX = trees[0][0]; 5 | 6 | for (let i = 1; i < trees.length; i++) { 7 | if (trees[i][0] < prevX) { 8 | answer++; 9 | prevX = trees[i][0]; 10 | } 11 | } 12 | 13 | return answer; 14 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-25/송원석/BOJ_11723_집합.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | // const inputs = fs.readFileSync('./dev/stdin').toString().trim().split('\n'); 3 | const inputs = fs.readFileSync('./BOJ/input/input.txt').toString().trim().split('\r\n'); 4 | 5 | const Main = () => { 6 | const N = +inputs.shift(); 7 | let bit = 0; 8 | let answer = ""; 9 | for (let i = 0; i < N; i++) { 10 | const [command, num] = inputs[i].split(" "); 11 | switch (command) { 12 | case 'add': 13 | bit |= 1 << num; 14 | break; 15 | case 'remove': 16 | bit &= ~(1 << num); 17 | break; 18 | case 'check': 19 | if (bit & (1 << num)) { 20 | answer += `1\n` 21 | } else { 22 | answer += `0\n` 23 | } 24 | break; 25 | case 'toggle': 26 | bit ^= (1 << num); 27 | break; 28 | case 'all': 29 | bit = (1 << 21) - 1; 30 | break; 31 | case 'empty': 32 | bit = 0 33 | } 34 | } 35 | console.log(answer); 36 | } 37 | 38 | Main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-25/송원석/BOJ_11725_트리의부모찾기.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | // const inputs = fs.readFileSync('./dev/stdin').toString().trim().split('\n'); 3 | const inputs = fs.readFileSync('./BOJ/input/input.txt').toString().trim().split('\r\n'); 4 | 5 | const Main = () => { 6 | const N = +inputs.shift(); 7 | const graph = new Array(N + 1).fill(0).map(el => []); 8 | const parent = new Array(N + 1); 9 | 10 | for (let i = 0; i < N - 1; i++) { 11 | const [from, to] = inputs[i].split(" ") 12 | graph[from].push(to); 13 | graph[to].push(from); 14 | } 15 | 16 | let answer = ""; 17 | const queue = []; 18 | queue.push(1); 19 | 20 | while (queue.length > 0) { 21 | const curr = queue.shift(); 22 | for (let i = 0; i < graph[curr].length; i++) { 23 | const next = graph[curr][i]; 24 | if (!parent[next]) { 25 | parent[next] = curr; 26 | queue.push(next); 27 | } 28 | } 29 | } 30 | 31 | 32 | for (let i = 2; i <= N; i++) { 33 | answer += `${parent[i]}\n`; 34 | } 35 | console.log(answer); 36 | } 37 | 38 | Main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-25/송원석/BOJ_14852_타일채우기3.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | // const inputs = fs.readFileSync('./dev/stdin').toString().trim().split('\n'); 3 | const inputs = fs.readFileSync('./BOJ/input/input.txt').toString().trim().split('\r\n'); 4 | 5 | 6 | const Main = () => { 7 | const MOD = 1000000007; 8 | const N = +inputs[0]; 9 | const f = [1, 2]; 10 | const g = [0, 1,] 11 | 12 | for (let i = 2; i <= N; ++i) { 13 | g[i] = ((f[i - 1] + f[i - 2]) % MOD + g[i - 2]) % MOD; 14 | f[i] = (f[i - 2] + (2 * g[i]) % MOD) % MOD; 15 | } 16 | console.log(f[N]); 17 | } 18 | 19 | Main(); 20 | 21 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-25/송원석/BOJ_1958_LCS3.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | // const inputs = fs.readFileSync('./dev/stdin').toString().trim().split('\n'); 3 | const inputs = fs.readFileSync('./BOJ/input/input.txt').toString().trim().split('\r\n'); 4 | 5 | const getTable = (str1, str2, str3) => { 6 | const table = new Array(str1.length + 1).fill(0).map(el => new Array(str2.length + 1).fill(0).map(el => new Array(str3.length + 1).fill(0))) 7 | for (let i = 1; i <= str1.length; i++) { 8 | for (let j = 1; j <= str2.length; j++) { 9 | for (let k = 1; k <= str3.length; k++) { 10 | if (str1[i - 1] === str2[j - 1] && str2[j - 1] === str3[k - 1]) { 11 | table[i][j][k] = table[i - 1][j - 1][k - 1] + 1 12 | } else { 13 | table[i][j][k] = Math.max(table[i - 1][j][k], table[i][j - 1][k], table[i][j][k - 1]); 14 | } 15 | } 16 | } 17 | } 18 | return table; 19 | } 20 | 21 | const Main = () => { 22 | inputs.sort((a, b) => a.length - b.length); 23 | const table = getTable(inputs[0], inputs[1], inputs[2]); 24 | console.log(table[inputs[0].length][inputs[1].length][inputs[2].length]); 25 | }; 26 | 27 | Main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-26/남동해/Main_bj_1003_피보나치함수.java: -------------------------------------------------------------------------------- 1 | package y2021.m01.d26; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | 6 | /* 7 | 3 8 | 0 9 | 1 10 | 3 11 | */ 12 | 13 | class Main_bj_1003_피보나치함수 { 14 | public static int[][] dp; 15 | public static void main(String[] args) throws Exception { 16 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 17 | int T = Integer.parseInt(br.readLine()); 18 | for(int tc=0;tc 0) { 18 | while (move > 0) { 19 | currIdx = (currIdx + 1) % N 20 | if (!visit[currIdx]) { 21 | move--; 22 | } 23 | } 24 | } else { 25 | move = Math.abs(move); 26 | while (move > 0) { 27 | currIdx = (currIdx === 0) ? N - 1 : currIdx - 1; 28 | if (!visit[currIdx]) { 29 | move--; 30 | } 31 | } 32 | } 33 | } 34 | 35 | console.log(answer.join(" ")); 36 | 37 | } 38 | main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-26/송원석/BOJ_2775_부녀회장이될테야.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | // const inputs = fs.readFileSync('./dev/stdin').toString().trim().split("\n"); 3 | const inputs = fs.readFileSync('./BOJ/input/input.txt').toString().trim().split('\r\n'); 4 | const DP = new Array(15).fill(0).map(v => new Array(15).fill(0)); 5 | 6 | 7 | function solution(k, n) { 8 | if (k === 0) { 9 | return n; 10 | } else if (n === 1) { 11 | return solution(k - 1, n); 12 | } else if (DP[k][n] > 0) { 13 | return DP[k][n] 14 | } 15 | DP[k][n] = solution(k, n - 1) + solution(k - 1, n); 16 | return DP[k][n]; 17 | } 18 | 19 | function main() { 20 | const T = +inputs.shift(); 21 | let answer = ""; 22 | for (let i = 0; i < T; i++) { 23 | const k = +inputs.shift(); 24 | const n = +inputs.shift(); 25 | answer += solution(k, n) + "\n"; 26 | } 27 | console.log(answer); 28 | } 29 | 30 | main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-01-27/송원석/Greedy_섬연결하기.js: -------------------------------------------------------------------------------- 1 | function findSet(p, n) { 2 | if (p[n] === n) { 3 | return n; 4 | } 5 | return findSet(p, p[n]); 6 | } 7 | 8 | function unionSet(p, a, b) { 9 | a = findSet(p, a); 10 | b = findSet(p, b); 11 | 12 | if (a < b) { 13 | p[a] = b; 14 | } else { 15 | p[b] = a; 16 | } 17 | } 18 | 19 | function solution(n, costs) { 20 | let answer = 0; 21 | const p = new Array(n); 22 | for (let i = 0; i < n; i++) { 23 | p[i] = i; 24 | } 25 | costs.sort((a, b) => a[2] - b[2]); 26 | 27 | for (let i = 0; i < costs.length; i++) { 28 | const a = costs[i][0]; 29 | const b = costs[i][1]; 30 | if (findSet(p, a) !== findSet(p, b)) { 31 | unionSet(p, a, b); 32 | answer += costs[i][2]; 33 | } 34 | } 35 | return answer; 36 | } 37 | 38 | console.log(solution(4, [[0, 1, 1], [0, 2, 2], [1, 2, 5], [1, 3, 1], [2, 3, 8]])); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-01/남동해/Solution_pro_코테2_미완.java: -------------------------------------------------------------------------------- 1 | package y2021.m02.d01; 2 | 3 | 4 | /* 5 | 풀이시간 : 6 | 시간 : 7 | 메모리 : 8 | - 9 | - 10 | */ 11 | 12 | public class Solution_pro_코테2 { 13 | public static void main(String[] args) throws Exception { 14 | double C = 1.0; 15 | double F = 100.0; 16 | double X = 100.0; 17 | // double C = 30.5; 18 | // double F = 3.14159; 19 | // double X = 1999.1999; 20 | // double C = 500.0; 21 | // double F = 4.0; 22 | // double X = 2000.0; 23 | System.out.println(solution(C,F,X)); 24 | } 25 | public static double min; 26 | private static double solution(double C, double F, double X) { 27 | double answer = 0.0; 28 | min=X/2.0; 29 | dfs(C,F,X,2.0,0.0); 30 | String temp = String.format("%.6f", min); 31 | answer=Double.parseDouble(temp); 32 | return answer; 33 | } 34 | private static double dfs(double C, double F, double X, double output, double time) { 35 | if(time>min) { 36 | return time; 37 | } 38 | double ntime = dfs(C,F,X,output+F,time+C/output); 39 | if(ntime prime; 21 | public static int solution(int N, int M) { 22 | int answer=0; 23 | prime = new ArrayList<>(); 24 | primeNum(N); 25 | int start = 0; 26 | int end = 0; 27 | int sum = 0; 28 | while(end offset + (C/efficiency) + X/(efficiency+F)) { 11 | offset += C/efficiency; 12 | efficiency += F; 13 | time = X / efficiency + offset; 14 | } 15 | 16 | time = Math.round(time*1000000.0)/1000000.0; 17 | return time; 18 | } 19 | 20 | public static void main(String[] args) { 21 | double a = solution(1.0,100.0,100.0); 22 | System.out.println(a); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-02/남동해/Main_bj_1806_부분합.java: -------------------------------------------------------------------------------- 1 | package y2021.m02.d02; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | import java.util.StringTokenizer; 6 | 7 | /* 8 | 10 30 9 | 5 1 3 5 10 7 4 9 2 30 10 | */ 11 | 12 | 13 | class Main_bj_1806_부분합 { 14 | public static void main(String[] args) throws Exception { 15 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 16 | StringTokenizer st = new StringTokenizer(br.readLine()); 17 | int N = Integer.parseInt(st.nextToken()); 18 | int S = Integer.parseInt(st.nextToken()); 19 | int[] data = new int[N]; 20 | st = new StringTokenizer(br.readLine()); 21 | for(int i=0;i=S) { 30 | if(end-start=N) 35 | break; 36 | sum+=data[end++]; 37 | } 38 | } 39 | if(min==Integer.MAX_VALUE) 40 | min=0; 41 | 42 | System.out.println(min); 43 | } 44 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-02/남동해/Main_bj_2671_잠수함식별.java: -------------------------------------------------------------------------------- 1 | package y2021.m02.d02; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | 6 | /* 7 | 100000000001101 8 | */ 9 | 10 | 11 | class Main_bj_2671_잠수함식별 { 12 | public static void main(String[] args) throws Exception { 13 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 14 | String sentence = br.readLine(); 15 | sentence = sentence.replaceAll("^(100+1+|01)+$", ""); 16 | if(sentence.length()==0) { 17 | System.out.println("SUBMARINE"); 18 | }else { 19 | System.out.println("NOISE"); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-02/남동해/Main_bj_2954_창영이의일기장.java: -------------------------------------------------------------------------------- 1 | package y2021.m02.d02; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | 6 | /* 7 | zepelepenapa papapripikapa 8 | */ 9 | 10 | 11 | class Main_bj_2954_창영이의일기장 { 12 | public static void main(String[] args) throws Exception { 13 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 14 | String sentence = br.readLine(); 15 | sentence=sentence.replaceAll("apa", "a"); 16 | sentence=sentence.replaceAll("epe", "e"); 17 | sentence=sentence.replaceAll("ipi", "i"); 18 | sentence=sentence.replaceAll("opo", "o"); 19 | sentence=sentence.replaceAll("upu", "u"); 20 | System.out.println(sentence); 21 | } 22 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-02/송원석/BOJ_1806_부분합.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | // const inputs = fs.readFileSync('./dev/stdin').toString().split("\n"); 3 | const inputs = fs.readFileSync('./BOJ/input/input.txt').toString().split('\r\n'); 4 | 5 | function main() { 6 | const [N, S] = inputs[0].split(" ").map(v => +v); 7 | const numbers = inputs[1].split(" ").map(v => +v); 8 | const MAX_NUMBER = 100001; 9 | let left = 0; 10 | let right = 0; 11 | let sum = numbers[0]; 12 | 13 | let min = MAX_NUMBER; 14 | while (left <= right) { 15 | if (sum >= S) { 16 | min = Math.min(min, right - left + 1); 17 | } 18 | 19 | if (sum < S) { 20 | if (right + 1 === N) 21 | break; 22 | sum += numbers[++right]; 23 | } else { 24 | sum -= numbers[left++]; 25 | } 26 | } 27 | if (min === MAX_NUMBER) { 28 | console.log(0); 29 | } else { 30 | console.log(min); 31 | } 32 | } 33 | 34 | main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-02/송원석/BOJ_2671_잠수함식별.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | // const inputs = fs.readFileSync('./dev/stdin').toString().trim(); 3 | const input = fs.readFileSync('./BOJ/input/input.txt').toString().trim(); 4 | 5 | function main() { 6 | const regex = /^(100+1+|01)+$/; 7 | if (input.match(regex)) { 8 | console.log("SUBMARINE"); 9 | } else { 10 | console.log("NOISE"); 11 | } 12 | } 13 | 14 | main(); -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-02/송원석/BOJ_2954_창영이의일기장.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | // const input = fs.readFileSync('./dev/stdin').toString().trim(); 3 | const input = fs.readFileSync('./BOJ/input/input.txt').toString().trim(); 4 | 5 | function main() { 6 | const regex = /(apa|epe|ipi|opo|upu)/g; 7 | const answer = input.replace(regex, (match) => match[0]); 8 | console.log(answer); 9 | } 10 | 11 | main(); 12 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-02/송원석/Main_1806_부분합.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | import java.util.*; 5 | 6 | public class Main_1806_부분합 { 7 | 8 | public static void main(String[] args) throws Exception{ 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | StringTokenizer st = new StringTokenizer(br.readLine()); 11 | 12 | int N = Integer.parseInt(st.nextToken()); 13 | int S = Integer.parseInt(st.nextToken()); 14 | int[] numbers = new int[N]; 15 | 16 | st = new StringTokenizer(br.readLine()); 17 | for(int i=0;i= S) { 29 | int length = right - left +1; 30 | min = Math.min(min, length); 31 | } 32 | 33 | if(sum < S) { 34 | if(right + 1 >= N) 35 | break; 36 | sum += numbers[++right]; 37 | }else { 38 | sum -= numbers[left++]; 39 | } 40 | } 41 | 42 | if(min == INF) { 43 | System.out.println(0); 44 | }else { 45 | System.out.println(min); 46 | } 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-02/송원석/Main_2671_잠수함식별.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.*; 4 | 5 | public class Main_2671_잠수함식별 { 6 | 7 | public static void main(String[] args) throws Exception { 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | String regex = "^(100+1+|01)+$"; 10 | 11 | String sound = br.readLine(); 12 | 13 | if(sound.matches(regex)) { 14 | System.out.println("SUBMARINE"); 15 | }else { 16 | System.out.println("NOISE"); 17 | } 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-02/송원석/Main_2954_창영이의일기장.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | 6 | public class Main_2954_창영이의일기장 { 7 | 8 | public static void main(String[] args) throws Exception{ 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | 11 | String[] regex = {"apa","epe","ipi","opo","upu"}; 12 | String[] origin = {"a","e","i","o","u"}; 13 | 14 | String diary = br.readLine(); 15 | 16 | for(int i=0;i= endTime) { 7 | count++; 8 | } else if (logs[i].end >= startTime && logs[i].end <= endTime) { 9 | count++; 10 | } else if (logs[i].start >= startTime && logs[i].start <= endTime) { 11 | count++; 12 | } 13 | } 14 | return count; 15 | } 16 | 17 | function solution(lines) { 18 | let firstTime = Number.MAX_VALUE; 19 | const logs = lines.map(v => { 20 | const log = v.split(" "); 21 | const time = Number(log[2].slice(0, -1)) * 1000 - 1; 22 | const end = new Date(log.slice(0, 2).join(" ")).getTime(); 23 | const start = end - time; 24 | firstTime = Math.min(start, firstTime); 25 | return { start, end }; 26 | }); 27 | let max = 0; 28 | 29 | logs.sort((a, b) => a.start - b.start); 30 | 31 | for (let i = 0; i < logs.length; i++) { 32 | const count = getCount(logs[i].end, logs); 33 | 34 | max = Math.max(max, count); 35 | } 36 | 37 | return max; 38 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-10/남동해/Solution_pro_비밀지도.java: -------------------------------------------------------------------------------- 1 | package y2021.m02.d10; 2 | 3 | import java.util.Arrays; 4 | 5 | public class Solution_pro_비밀지도 { 6 | public static void main(String[] args) throws Exception { 7 | // int n = 5; 8 | // int[] arr1 = {9, 20, 28, 18, 11}; 9 | // int[] arr2 = {30, 1, 21, 17, 28}; 10 | // int n = 1; 11 | // int[] arr1 = {0}; 12 | // int[] arr2 = {0}; 13 | int n = 16; 14 | int[] arr1 = {90000, 20, 28, 18, 11,9, 20, 28, 18, 11,9, 20, 28, 18, 11,60}; 15 | int[] arr2 = {30, 1, 21, 17, 28,30, 1, 21, 17, 28,30, 1, 21, 17, 28,200}; 16 | 17 | System.out.println(Arrays.toString(solution(n,arr1,arr2))); 18 | } 19 | public static String[] solution(int n, int[] arr1, int[] arr2) { 20 | String[] answer = new String[n]; 21 | for(int i=0;i15) { 20 | new_id = new_id.substring(0,15); 21 | } 22 | new_id = new_id.replaceAll("[.]$",""); 23 | if(new_id.length()<3) { 24 | int a = new_id.length(); 25 | for(int i=0;i<3-a;i++) { 26 | new_id=new_id+new_id.charAt(a-1); 27 | } 28 | } 29 | answer = new_id; 30 | return answer; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-10/송원석/KAKAO_2018_비밀지도.java: -------------------------------------------------------------------------------- 1 | package Programmers.kakao; 2 | 3 | public class KAKAO_2018_비밀지도 { 4 | public static String[] solution(int n, int[] arr1, int[] arr2) { 5 | String[] answer = new String[n]; 6 | 7 | for(int i=0;i= 16){ 12 | if(new_id.charAt(14) == '.'){ 13 | new_id = new_id.substring(0,14); 14 | }else{ 15 | new_id = new_id.substring(0,15); 16 | } 17 | } 18 | while(new_id.length() <=2){ 19 | new_id += new_id.substring(new_id.length()-1, new_id.length()); 20 | } 21 | 22 | return new_id; 23 | } 24 | 25 | public static void main(String[] args) { 26 | String new_id = "123_.def"; 27 | String answer = solution(new_id); 28 | System.out.println(answer); 29 | 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-17/송원석/Kakao_다트게임.js: -------------------------------------------------------------------------------- 1 | function solution(dartResult) { 2 | const score = []; 3 | const effect = { 4 | S: 1, 5 | D: 2, 6 | T: 3, 7 | }; 8 | let number = ""; 9 | for (let i = 0; i < dartResult.length; i++) { 10 | if (dartResult[i] == "S" || dartResult[i] == "D" || dartResult[i] == "T") { 11 | score.push(Number(number)); 12 | number = ""; 13 | score[score.length - 1] **= effect[dartResult[i]]; 14 | } else if (dartResult[i] == "*") { 15 | for (let j = score.length - 1; j >= 0 && j >= score.length - 2; j--) { 16 | score[j] *= 2; 17 | } 18 | } else if (dartResult[i] == "#") { 19 | score[score.length - 1] *= -1; 20 | } else { 21 | number += dartResult[i]; 22 | } 23 | } 24 | 25 | const answer = score.reduce((acc, v) => acc += v, 0); 26 | 27 | return answer; 28 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-19/남동해/Main_bj_2303_숫자게임.java: -------------------------------------------------------------------------------- 1 | package y2021.m02.d19; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | import java.util.StringTokenizer; 6 | 7 | /* 8 | 3 9 | 7 5 5 4 9 10 | 1 1 1 1 1 11 | 2 3 3 2 10 12 | */ 13 | 14 | class Main_bj_2303_숫자게임 { 15 | public static void main(String[] args) throws Exception { 16 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 17 | StringTokenizer st; 18 | int N = Integer.parseInt(br.readLine()); 19 | int winner=0; 20 | int flag=0; 21 | int[] card = new int[5]; 22 | for(int num=0;num=max) { 33 | max=curr%10; 34 | } 35 | } 36 | } 37 | } 38 | if(max>=flag) { 39 | flag=max; 40 | winner=num; 41 | } 42 | } 43 | System.out.println(winner+1); 44 | } 45 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-19/남동해/Main_bj_8958_OX퀴즈.java: -------------------------------------------------------------------------------- 1 | package y2021.m02.d19; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | 6 | /* 7 | 5 8 | OOXXOXXOOO 9 | OOXXOOXXOO 10 | OXOXOXOXOXOXOX 11 | OOOOOOOOOO 12 | OOOOXOOOOXOOOOX 13 | */ 14 | 15 | class Main_bj_8958_OX퀴즈 { 16 | public static void main(String[] args) throws Exception { 17 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 18 | int N = Integer.parseInt(br.readLine()); 19 | int answer = 0; 20 | StringBuilder sb = new StringBuilder(); 21 | for(int i=0;i= max) { 28 | winner = p; 29 | max = sum%10; 30 | } 31 | } 32 | } 33 | } 34 | } 35 | System.out.println(winner); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-19/송원석/Main_8958_OX퀴즈.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | 6 | public class Main_8958_OX퀴즈 { 7 | 8 | public static void main(String[] args) throws Exception { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | StringBuilder sb = new StringBuilder(); 11 | int N = Integer.parseInt(br.readLine()); 12 | 13 | 14 | for(int tc=0;tc=end) { 31 | return t; 32 | } 33 | if(input.charAt(start)==input.charAt(end)) { 34 | return palindrome(input, start+1, end-1, esc,t); 35 | }else { 36 | if(!esc) { 37 | return Math.min(palindrome(input, start,end-1,true,1), palindrome(input, start+1,end,true,1)); 38 | }else { 39 | return 2; 40 | } 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-02-22/송원석/Main_17609_회문.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | 6 | public class Main_17609_회문 { 7 | 8 | public static int check(String str, boolean removed, int left, int right) { 9 | if(left > right) { 10 | if(removed) return 1; 11 | return 0; 12 | } 13 | 14 | if(str.charAt(left) == str.charAt(right)) { 15 | return check(str,removed ,left+1, right-1); 16 | }else { 17 | if(!removed) { 18 | return Math.min(check(str, !removed ,left+1, right), check(str, !removed ,left, right-1)); 19 | }else { 20 | return 2; 21 | } 22 | } 23 | 24 | } 25 | 26 | public static void main(String[] args) throws Exception{ 27 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 28 | int N = Integer.parseInt(br.readLine()); 29 | StringBuilder sb = new StringBuilder(); 30 | 31 | for(int i=0;iarr[j]) { 25 | curr = Math.max(curr, dp[j]); 26 | } 27 | } 28 | dp[i]=curr+1; 29 | if(answer=n) { 33 | s=co[num%n]+s; 34 | num/=n; 35 | }else { 36 | s=co[num]+s; 37 | break; 38 | } 39 | } 40 | return s; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-03-03/남동해/Main_bj_1904_01타일.java: -------------------------------------------------------------------------------- 1 | package y2021.m03.d03; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | 6 | /* 7 | 4 8 | */ 9 | 10 | 11 | class Main_bj_1904_01타일 { 12 | public static void main(String[] args) throws Exception { 13 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 14 | int N = Integer.parseInt(br.readLine()); 15 | int dp[] = new int[N+3]; 16 | dp[1]=1; 17 | dp[2]=2; 18 | for(int i=3;i<=N;i++) { 19 | dp[i]=(dp[i-1]%15746+dp[i-2]%15746)%15746; 20 | } 21 | System.out.println(dp[N]); 22 | } 23 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-03-03/남동해/Main_bj_2292_벌집.java: -------------------------------------------------------------------------------- 1 | package y2021.m03.d03; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | 6 | /* 7 | 13 8 | */ 9 | 10 | 11 | class Main_bj_2292_벌집 { 12 | public static void main(String[] args) throws Exception { 13 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 14 | int N = Integer.parseInt(br.readLine()); 15 | int curr = 1; 16 | if(N==1) { 17 | System.out.println(1); 18 | }else { 19 | for(int i=0;icurr&&N<=curr+i*6) { 21 | System.out.println(i+1); 22 | break; 23 | } 24 | curr=curr+i*6; 25 | } 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-09-17/문지현/가장긴팰린드롬.java: -------------------------------------------------------------------------------- 1 | public class 가장긴팰린드롬 { 2 | 3 | public static void main(String[] args) { 4 | 가장긴팰린드롬 num1 = new 가장긴팰린드롬(); 5 | System.out.println(num1.solution("abcdcba" 6 | )); 7 | } 8 | 9 | public int solution(String s) { 10 | int answer = 1; 11 | 12 | for (int i = s.length(); i >= 2; i--) { 13 | for (int j = 0; j < s.length(); j++) { 14 | if (i + j > s.length()) break; 15 | 16 | boolean flag = true; 17 | for (int k = 0; k < i/2; k++) { 18 | if(s.charAt(j+k) != s.charAt(i+j-k-1)) { 19 | flag = false; 20 | break; 21 | } 22 | } 23 | 24 | if(flag) return i; 25 | } 26 | } 27 | return answer; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-09-18/송원석/Practice_가장긴팰린드롬.java: -------------------------------------------------------------------------------- 1 | package Programmers.practice; 2 | 3 | public class Practice_가장긴팰린드롬 { 4 | public int getLength(String s, int left, int right) { 5 | int count = 0; 6 | 7 | while (left >= 0 && right < s.length()) { 8 | if (s.charAt(left) == s.charAt(right)) { 9 | count += 2; 10 | left--; 11 | right++; 12 | } else { 13 | break; 14 | } 15 | } 16 | 17 | return count; 18 | } 19 | 20 | public int solution(String s) { 21 | int answer = 1; 22 | 23 | for (int i = 0; i < s.length() - 1; i++) { 24 | int length = Math.max(getLength(s, i - 1, i + 1) + 1, getLength(s, i, i + 1)); 25 | 26 | answer = Math.max(answer, length); 27 | } 28 | 29 | return answer; 30 | } 31 | 32 | public static void main(String[] args) { 33 | Practice_가장긴팰린드롬 test = new Practice_가장긴팰린드롬(); 34 | String s = "a"; 35 | 36 | System.out.println(test.solution(s)); 37 | 38 | } 39 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-09-18/황인규/Practice_가장긴펠린드롬.py: -------------------------------------------------------------------------------- 1 | def expand(s, left, right) : 2 | temp = s[left:right+1] 3 | while left>=0 and right 0 ; h--) { 8 | for(int w = 0; w < triangle[h].length - 1; w++) { 9 | triangle[h - 1][w] += Math.max(triangle[h][w], triangle[h][w+1]); 10 | } 11 | } 12 | 13 | return triangle[0][0]; 14 | } 15 | public static void main(String[] args) { 16 | Programmers_정수삼각형 test = new Programmers_정수삼각형(); 17 | int[][] triangle = {{7}, {3, 8}, {8, 1, 0}, {2, 7, 4, 4}, {4, 5, 2, 6, 5}}; 18 | 19 | System.out.println(test.solution(triangle)); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-09-25/문지현/부족한금액계산하기.java: -------------------------------------------------------------------------------- 1 | public class 부족한금액계산하기 { 2 | 3 | public static void main(String[] args) { 4 | 부족한금액계산하기 num1 = new 부족한금액계산하기(); 5 | System.out.println(num1.solution( 6 | 3, 20, 4 7 | )); 8 | } 9 | 10 | public long solution(int price, int money, int count) { 11 | long answer; 12 | long fee = count * (price + (long) count * price) / 2; 13 | answer = fee - money; 14 | if (answer <= 0) return 0; 15 | return answer; 16 | } 17 | /** 18 | * n(a+l) / 2 19 | */ 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-09-25/송원석/Programmers_부족한금액계산하기.java: -------------------------------------------------------------------------------- 1 | package Programmers.weekly; 2 | 3 | public class Programmers_부족한금액계산하기 { 4 | public long solution(int price, int money, int count) { 5 | long N = count; 6 | 7 | long total = N * (2 * price + (N - 1) * price) / 2; 8 | 9 | if(total <= money) { 10 | return 0; 11 | } 12 | 13 | return total - money; 14 | } 15 | 16 | public static void main(String[] args) { 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-10-05/문지현/N으로표현.java: -------------------------------------------------------------------------------- 1 | public class N으로표현 { 2 | 3 | public static void main(String[] args) { 4 | N으로표현 num1 = new N으로표현(); 5 | System.out.println(num1.solution( 6 | 2,12 7 | )); 8 | } 9 | 10 | int min = Integer.MAX_VALUE; 11 | public int solution(int N, int number) { 12 | solve(N,0,0,number); 13 | if(min>8) return -1; 14 | return min; 15 | } 16 | 17 | public void solve(int N, int count, int now, int number){ 18 | if(count > 8) { 19 | return; 20 | } 21 | if(now == number){ 22 | if(min>count) min = count; 23 | return; 24 | } 25 | int temp = N; 26 | for(int i=0; i<8-count; i++){ 27 | solve(N, count+i+1, now+temp, number); 28 | solve(N, count+i+1, now-temp, number); 29 | solve(N, count+i+1, now/temp, number); 30 | solve(N, count+i+1, now*temp, number); 31 | temp = temp*10+N; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-10-05/송원석/Programmers_N으로표현.java: -------------------------------------------------------------------------------- 1 | package Programmers.practice; 2 | 3 | import java.util.HashSet; 4 | 5 | public class Programmers_N으로표현 { 6 | 7 | public int solution(int N, int number) { 8 | HashSet[] dp = new HashSet[9]; 9 | 10 | for (int i = 1; i <= 8; i++) { 11 | dp[i] = new HashSet<>(); 12 | } 13 | 14 | for (int i = 1; i <= 8; i++) { 15 | String repeatedN = Integer.toString(N).repeat(i); 16 | 17 | dp[i].add(Integer.parseInt(repeatedN)); 18 | 19 | for (int j = 1; j < i; j++) { 20 | HashSet left = dp[j]; 21 | HashSet right = dp[i - j]; 22 | 23 | for(int num1 : left) { 24 | for(int num2 : right) { 25 | dp[i].add(num1 + num2)); 26 | dp[i].add(num1 - num2)); 27 | dp[i].add(num1 * num2)); 28 | if(num2 != 0) 29 | dp[i].add(num1 / num2)); 30 | } 31 | } 32 | } 33 | 34 | if (dp[i].contains(number)) { 35 | return i; 36 | } 37 | } 38 | 39 | return -1; 40 | } 41 | 42 | public static void main(String[] args) { 43 | 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-10-06/황인규/N으로표현하는수.py: -------------------------------------------------------------------------------- 1 | def solution(N, number): 2 | answer = 0 3 | DP = [] 4 | 5 | for i in range(1,9): 6 | numbers = set() 7 | numbers.add(int(str(N)*i)) 8 | for j in range(0, i-1) : 9 | for op1 in DP[j] : 10 | for op2 in DP[-j-1]: 11 | numbers.add(op1+op2) 12 | numbers.add(op1-op2) 13 | numbers.add(op1*op2) 14 | if op2!=0 : 15 | numbers.add(op1//op2) 16 | if number in numbers : 17 | answer = i 18 | break 19 | DP.append(number) 20 | return answer -------------------------------------------------------------------------------- /Algorithm/Solution/2021-10-07/문지현/LCS.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class LCS { 6 | 7 | /* 8 | LCS(Longest Common Subsequence) 9 | */ 10 | 11 | public static void main(String[] args) throws IOException { 12 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 13 | 14 | char[] str1 = br.readLine().toCharArray(); 15 | char[] str2 = br.readLine().toCharArray(); 16 | 17 | int[][] dp = new int[str1.length + 1][str2.length + 1]; 18 | 19 | for (int i = 1; i <= str1.length; i++) { 20 | for (int j = 1; j <= str2.length; j++) { 21 | 22 | if (str1[i - 1] == str2[j - 1]) { 23 | dp[i][j] = dp[i - 1][j - 1] + 1; 24 | } else { 25 | dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); 26 | } 27 | } 28 | } 29 | System.out.println(dp[str1.length][str2.length]); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-10-07/송원석/BOJ_9251_LCS.java: -------------------------------------------------------------------------------- 1 | package baek; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | 7 | public class BOJ_9251_LCS { 8 | public static void main(String[] args) throws IOException { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | String word1 = br.readLine(); 11 | String word2 = br.readLine(); 12 | 13 | int[][] lcs = new int[word1.length() + 1][word2.length() + 1]; 14 | 15 | for (int i = 1; i <= word1.length(); i++) { 16 | char alphabet1 = word1.charAt(i-1); 17 | 18 | for (int j = 1; j <= word2.length(); j++) { 19 | char alphabet2 = word2.charAt(j-1); 20 | 21 | if(alphabet1 == alphabet2) { 22 | lcs[i][j] = lcs[i-1][j-1] + 1; 23 | continue; 24 | } 25 | 26 | lcs[i][j] = Math.max(lcs[i-1][j], lcs[i][j-1]); 27 | } 28 | } 29 | 30 | System.out.println(lcs[word1.length()][word2.length()]); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-10-08/문지현/숫자의표현.java: -------------------------------------------------------------------------------- 1 | public class 숫자의표현 { 2 | 3 | public static void main(String[] args) { 4 | 5 | } 6 | 7 | public int solution(int n) { 8 | int answer = 0; 9 | 10 | int left = 1; 11 | int right = 1; 12 | int sum = 1; 13 | 14 | while(left <= right) { 15 | if(sum > n) { 16 | sum -= left; 17 | left++; 18 | }else if(sum < n) { 19 | right++; 20 | sum += right; 21 | }else { 22 | answer++; 23 | sum -= left; 24 | left++; 25 | } 26 | } 27 | 28 | return answer; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Algorithm/Solution/2021-10-08/송원석/Programmers_숫자의표현.java: -------------------------------------------------------------------------------- 1 | package Programmers.practice; 2 | 3 | public class Programmers_숫자의표현 { 4 | 5 | public int solution(int n) { 6 | int answer = 0; 7 | int left = 0; 8 | int right = 1; 9 | 10 | int sum = 1; 11 | 12 | while (left != n) { 13 | if (sum <= n) { 14 | sum += ++right; 15 | } else if (sum > n) { 16 | sum -= ++left; 17 | } 18 | 19 | if (sum == n) { 20 | answer++; 21 | } 22 | 23 | } 24 | 25 | return answer; 26 | } 27 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2021-10-08/황인규/BOJ_9251_LCS.py: -------------------------------------------------------------------------------- 1 | import sys 2 | sub = sys.readline().strip().upper() 3 | sub2 = sys.readline().strip().upper() 4 | 5 | matrix = [ (len(sub2)+1)*[0] for _ in range(len(sub)+1) ] 6 | 7 | for i in range(1, len1+1): 8 | for j in range(1, len2+1): 9 | if sub[i-1] == sub2[j-1]: 10 | matrix[i][j] = matrix[i-1][j-1]+1 11 | else : 12 | matrix[i][j] = max(matrix[i-1][j], matrix[i][j-1]) 13 | print(matrix[-1][-1]) -------------------------------------------------------------------------------- /Algorithm/Solution/2021-10-08/황인규/[3차]자동완성.py: -------------------------------------------------------------------------------- 1 | class Trie(): 2 | def __init__(self): 3 | self.next = dict() 4 | self.value = 0 5 | 6 | def solution(words): 7 | answer = 0 8 | tree = Trie() 9 | for word in words: 10 | sub = tree 11 | for idx, val in enumerate(word): 12 | sub.value += 1 13 | if val not in sub.next: 14 | sub.next[val] = Trie() 15 | sub = sub.next[val] 16 | if (idx == len(word) - 1): 17 | sub.value += 1 18 | 19 | for word in words: 20 | sub = tree 21 | counts = 0 22 | for idx, val in enumerate(word): 23 | if (sub.value == 1): 24 | answer += counts 25 | break 26 | elif idx == len(word) - 1: 27 | answer += counts + 1 28 | break 29 | else: 30 | sub = sub.next[val] 31 | counts += 1 32 | 33 | 34 | return answer -------------------------------------------------------------------------------- /Algorithm/Solution/2021-10-13/황인규/BOJ_1911_흙길보수하기.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import math 3 | input = sys.stdin.readline 4 | 5 | N,L = map(int, input().split()) 6 | pool = [] 7 | for i in range(N) : 8 | pool.append(list(map(int, input().split()))) 9 | pool.sort(key=lambda x:x[0]) 10 | print(pool) 11 | 12 | maxl = 0 13 | cnt = 0 14 | answer = 0 15 | for s,e in pool : 16 | #print(type(s)) 17 | 18 | if s <= maxl : 19 | s = maxl + 1 20 | 21 | cnt = math.ceil((e-s)/L) 22 | answer += cnt 23 | maxl = max(maxl, s+cnt*L-1) 24 | #확 생각나진 않네, 이게 판떼지가 늘어선거라곤 25 | 26 | print(answer) -------------------------------------------------------------------------------- /Algorithm/Solution/2021-10-14/황인규/BOJ_1062_가르침.py: -------------------------------------------------------------------------------- 1 | from itertools import combinations 2 | n, k = map(int, input().split()) 3 | if k < 5: 4 | print(0) 5 | else: 6 | k -= 5 7 | nece_chars = {'a', 'n', 't', 'i', 'c'} 8 | input_chars = [] 9 | alpha = {ky: v for v, ky in enumerate( 10 | (set(map(chr, range(ord('a'), ord('z')+1))) - nece_chars))} 11 | cnt = 0 12 | for _ in range(n): 13 | tmp = 0 14 | for c in set(input())-nece_chars: 15 | tmp |= (1 << alpha[c]) 16 | input_chars.append(tmp) 17 | power_by_2 = (2**i for i in range(21)) 18 | for comb in combinations(power_by_2, k): 19 | test = sum(comb) 20 | 21 | ct = 0 22 | for cb in input_chars: 23 | if test & cb == cb: 24 | ct += 1 25 | 26 | cnt = max(cnt, ct) 27 | print(cnt) -------------------------------------------------------------------------------- /Algorithm/Solution/2023/01/week1/KSH/0001-two-sum.java: -------------------------------------------------------------------------------- 1 | class Solution { 2 | public int[] twoSum(int[] nums, int target) { 3 | 4 | int[] test = new int[2]; 5 | for(int i=0; i result) result = price - min; 12 | } 13 | return result; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Algorithm/Solution/2023/01/week1/PMS/12945-피보나치수.java: -------------------------------------------------------------------------------- 1 | class Solution { 2 | public int solution(int n) { 3 | int answer = 0; 4 | 5 | int [] result = new int [100001]; 6 | result[1] = 1; 7 | result[2] = 1; 8 | 9 | for(int i=3;i<=n;i++) 10 | { 11 | result[i] = (result[i-2] + result[i-1]) % 1234567; 12 | } 13 | 14 | answer = result[n]; 15 | 16 | return answer; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Algorithm/Solution/2023/01/week1/PMS/12953-N개의-최소공배수.java: -------------------------------------------------------------------------------- 1 | class Solution { 2 | public int solution(int[] arr) { 3 | int answer = 0; 4 | 5 | int len = arr.length; 6 | 7 | int gcd = GCD(arr[0], arr[1]); 8 | int lcm = (arr[0] * arr[1]) / gcd; 9 | 10 | for(int i=2;i list = new ArrayList<>(); 9 | int startNum = -1; 10 | for(int i=0;i map = new HashMap(); 6 | 7 | int[] answer = new int[2]; 8 | 9 | for(int i = 0; i < nums.length; i++) { 10 | if(map.containsKey(target - nums[i])) { 11 | answer[0] = map.get(target - nums[i]); 12 | answer[1] = i; 13 | break; 14 | } 15 | 16 | map.put(nums[i], i); 17 | } 18 | 19 | return answer; 20 | 21 | } 22 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2023/01/week1/SWS/0242-valid-anagram.java: -------------------------------------------------------------------------------- 1 | class Solution { 2 | public boolean isAnagram(String s, String t) { 3 | if(s.length() != t.length()) { 4 | return false; 5 | } 6 | 7 | int[] countS = new int[26]; 8 | int[] countT = new int[26]; 9 | 10 | for(int i =0; i < s.length(); i++) { 11 | countS[s.charAt(i) - 'a']++; 12 | countT[t.charAt(i) - 'a']++; 13 | } 14 | 15 | for(int i = 0; i < 26; i++) { 16 | if(countS[i] != countT[i]) { 17 | return false; 18 | } 19 | } 20 | 21 | return true; 22 | 23 | } 24 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2023/01/week1/SWS/121-best-time-to-buy-and-sell-stock.java: -------------------------------------------------------------------------------- 1 | class Solution { 2 | public int maxProfit(int[] prices) { 3 | 4 | int minValue = Integer.MAX_VALUE; 5 | int answer = 0; 6 | 7 | for(int price : prices) { 8 | minValue = Math.min(minValue, price); 9 | 10 | answer = Math.max(price - minValue, answer); 11 | } 12 | 13 | return answer; 14 | } 15 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2023/01/week1/SWS/34-find-first-and-last-position-of-element-in-sorted-array.java: -------------------------------------------------------------------------------- 1 | class Solution { 2 | public int[] searchRange(int[] nums, int target) { 3 | int left = 0; 4 | int right = nums.length - 1; 5 | 6 | int[] answer = {-1, -1}; 7 | 8 | while(left <= right) { 9 | if(nums[left] == target) { 10 | answer[0] = left; 11 | }else{ 12 | left++; 13 | } 14 | 15 | if(nums[right] == target) { 16 | answer[1] = right; 17 | }else { 18 | right--; 19 | } 20 | 21 | if(answer[0] > -1 && answer[1] > -1) { 22 | break; 23 | } 24 | } 25 | 26 | 27 | 28 | return answer; 29 | 30 | } 31 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2023/01/week1/SWS/N개의 최소공배수.java: -------------------------------------------------------------------------------- 1 | import java.util.*; 2 | 3 | class Solution { 4 | public int solution(int[] arr) { 5 | Arrays.sort(arr); 6 | 7 | int lcm = arr[0]; 8 | 9 | label: while(true) { 10 | for(int num : arr) { 11 | if(lcm % num != 0) { 12 | lcm += arr[0]; 13 | continue label; 14 | } 15 | } 16 | 17 | break; 18 | } 19 | 20 | return lcm; 21 | } 22 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2023/01/week1/SWS/피보나치 수.java: -------------------------------------------------------------------------------- 1 | import java.util.*; 2 | 3 | class Solution { 4 | int[] dp; 5 | 6 | public int getFibonacci(int n) { 7 | if(dp[n] != -1) { 8 | return dp[n]; 9 | } 10 | 11 | dp[n] = (getFibonacci(n-1) + getFibonacci(n-2)) % 1234567; 12 | 13 | return dp[n]; 14 | } 15 | 16 | public int solution(int n) { 17 | dp = new int[100001]; 18 | Arrays.fill(dp, -1); 19 | dp[0] = 0; 20 | dp[1] = 1; 21 | 22 | 23 | return getFibonacci(n); 24 | } 25 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2023/01/week2/PMS/N과 M (1).java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.InputStreamReader; 3 | import java.util.StringTokenizer; 4 | 5 | public class Main { 6 | 7 | public static void main(String[] args) throws Exception { 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | 10 | StringTokenizer st = new StringTokenizer(br.readLine()); 11 | 12 | int N = Integer.parseInt(st.nextToken()); 13 | int M = Integer.parseInt(st.nextToken()); 14 | 15 | boolean [] visit = new boolean [N+1]; 16 | int [] answer = new int [M]; 17 | StringBuilder sb = new StringBuilder(); 18 | 19 | dfs(0,N,M,sb,answer,visit); 20 | System.out.println(sb.toString()); 21 | } 22 | 23 | public static void dfs(int idx, int N, int M, StringBuilder sb, int [] answer, boolean [] visit) 24 | { 25 | if(idx == M) 26 | { 27 | for(int i=0;i list; 7 | static StringBuilder sb; 8 | public static void perm(int count) { 9 | if(count == M) { 10 | for(int i=0;i(); 39 | perm(0); 40 | System.out.println(sb.toString()); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /Algorithm/Solution/2023/01/week2/PMS/위장.java: -------------------------------------------------------------------------------- 1 | import java.util.*; 2 | 3 | class Solution { 4 | public int solution(String[][] clothes) { 5 | int answer = 0; 6 | HashMap clothMap = new HashMap<>(); 7 | 8 | int len = clothes.length; 9 | 10 | for(int i=0;i map = new HashMap<>(); 8 | int N = phone_book.length; 9 | 10 | for(int i=0;i map = new HashMap(); 6 | 7 | for(String[] c : clothes) { 8 | map.put(c[1], map.getOrDefault(c[1], 1) + 1); // 안입는 경우도 있어서 default: 1 9 | } 10 | 11 | int answer = 1; 12 | 13 | for(String key: map.keySet()) { 14 | answer *= map.get(key); 15 | } 16 | 17 | answer--; // 아무것도 안입은 경우는 제외 18 | 19 | return answer; 20 | } 21 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2023/01/week2/SWS/전화번호 목록.java: -------------------------------------------------------------------------------- 1 | import java.util.*; 2 | 3 | class Solution { 4 | public boolean solution(String[] phone_book) { 5 | boolean answer = true; 6 | 7 | Arrays.sort(phone_book); 8 | 9 | for(int i = 0; i < phone_book.length - 1; i++) { 10 | String curr = phone_book[i]; 11 | String next = phone_book[i + 1]; 12 | 13 | if(next.indexOf(curr) == 0) { 14 | return false; 15 | } 16 | } 17 | 18 | return true; 19 | } 20 | } -------------------------------------------------------------------------------- /Algorithm/Solution/2023/01/week2/SWS/타겟 넘버.java: -------------------------------------------------------------------------------- 1 | class Solution { 2 | public int dfs(int[] numbers, int target, int depth, int sum) { 3 | if(depth < numbers.length) { 4 | return dfs(numbers, target, depth + 1, sum + numbers[depth]) 5 | + dfs(numbers, target, depth + 1, sum - numbers[depth]); 6 | } 7 | 8 | if(sum == target) { 9 | return 1; 10 | } 11 | 12 | return 0; 13 | } 14 | 15 | public int solution(int[] numbers, int target) { 16 | int answer = dfs(numbers, target, 0, 0); 17 | return answer; 18 | } 19 | } -------------------------------------------------------------------------------- /Algorithm/image/binarysearch.GIF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/binarysearch.GIF -------------------------------------------------------------------------------- /Algorithm/image/bitmask-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/bitmask-1.png -------------------------------------------------------------------------------- /Algorithm/image/bitmask-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/bitmask-2.png -------------------------------------------------------------------------------- /Algorithm/image/bubblesort.GIF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/bubblesort.GIF -------------------------------------------------------------------------------- /Algorithm/image/countingsort.GIF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/countingsort.GIF -------------------------------------------------------------------------------- /Algorithm/image/heapsort-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/heapsort-1.PNG -------------------------------------------------------------------------------- /Algorithm/image/heapsort-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/heapsort-2.PNG -------------------------------------------------------------------------------- /Algorithm/image/heapsort-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/heapsort-3.PNG -------------------------------------------------------------------------------- /Algorithm/image/heapsort.GIF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/heapsort.GIF -------------------------------------------------------------------------------- /Algorithm/image/insertionsort.GIF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/insertionsort.GIF -------------------------------------------------------------------------------- /Algorithm/image/mergesort-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/mergesort-1.PNG -------------------------------------------------------------------------------- /Algorithm/image/mergesort.GIF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/mergesort.GIF -------------------------------------------------------------------------------- /Algorithm/image/quicksort-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/quicksort-1.PNG -------------------------------------------------------------------------------- /Algorithm/image/quicksort-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/quicksort-2.PNG -------------------------------------------------------------------------------- /Algorithm/image/quicksort-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/quicksort-3.PNG -------------------------------------------------------------------------------- /Algorithm/image/quicksort.GIF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/quicksort.GIF -------------------------------------------------------------------------------- /Algorithm/image/radixsort.GIF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/radixsort.GIF -------------------------------------------------------------------------------- /Algorithm/image/segment-tree-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/segment-tree-1.PNG -------------------------------------------------------------------------------- /Algorithm/image/selectionsort.GIF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Algorithm/image/selectionsort.GIF -------------------------------------------------------------------------------- /Algorithm/이분 탐색(Binary Search).md: -------------------------------------------------------------------------------- 1 | ## 이분 탐색(Binary Search) 2 | 3 | > 탐색 범위를 두 부분으로 분할하면서 찾는 방식 4 | 5 | 처음부터 끝까지 돌면서 탐색하는 것보다 훨~~~씬 빠른 장점을 지님 6 | 7 | ``` 8 | * 시간복잡도 9 | 전체 탐색 : O(N) 10 | 이분 탐색 : O(logN) 11 | ``` 12 | 13 | ![binarysearch](https://github.com/Songwonseok/CS-Study/blob/main/Algorithm/image/binarysearch.GIF?raw=true) 14 | 15 | 16 | 17 | 18 | 19 | #### 진행 순서 20 | 21 | - 배열을 정렬시킴 22 | - first와 last로 mid 값 설정 23 | - mid와 내가 구하고자 하는 값과 비교 24 | - 구할 값이 mid보다 높으면 : first = mid+1 구할 값이 mid보다 낮으면 : last = mid - 1 25 | - first > last가 될 때까지 계속 반복하기 26 | 27 | 28 | 29 | #### Code 30 | 31 | ```java 32 | public static int binarySearch(int[] A, int n) { 33 | int first = 0; 34 | int last = A.length - 1; 35 | int mid = 0; 36 | 37 | while (first <= last) { 38 | mid = (first + last) / 2; 39 | 40 | if (n == A[mid]) 41 | return 1; 42 | else { 43 | if (n < A[mid]) 44 | last = mid - 1; 45 | else 46 | first = mid + 1; 47 | } 48 | } 49 | return 0; 50 | } 51 | ``` -------------------------------------------------------------------------------- /CommonSense/images/Agile-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/CommonSense/images/Agile-1.PNG -------------------------------------------------------------------------------- /CommonSense/images/Agile-2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/CommonSense/images/Agile-2.JPG -------------------------------------------------------------------------------- /CommonSense/images/Agile-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/CommonSense/images/Agile-3.PNG -------------------------------------------------------------------------------- /CommonSense/images/TDD-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/CommonSense/images/TDD-1.PNG -------------------------------------------------------------------------------- /CommonSense/images/TDD-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/CommonSense/images/TDD-2.PNG -------------------------------------------------------------------------------- /CommonSense/images/TDD-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/CommonSense/images/TDD-3.PNG -------------------------------------------------------------------------------- /CommonSense/images/cleancode-refactoring-1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/CommonSense/images/cleancode-refactoring-1.JPG -------------------------------------------------------------------------------- /CommonSense/images/cleancode-securecoding-1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/CommonSense/images/cleancode-securecoding-1.JPG -------------------------------------------------------------------------------- /CommonSense/images/cleancode-securecoding-2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/CommonSense/images/cleancode-securecoding-2.JPG -------------------------------------------------------------------------------- /CommonSense/images/functional-programming-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/CommonSense/images/functional-programming-1.jpg -------------------------------------------------------------------------------- /CommonSense/images/git-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/CommonSense/images/git-1.png -------------------------------------------------------------------------------- /CommonSense/images/thirdparty-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/CommonSense/images/thirdparty-1.jpg -------------------------------------------------------------------------------- /CommonSense/써드 파티 (Third Party).md: -------------------------------------------------------------------------------- 1 | # 써드 파티 (Third Party) 2 | 3 | 4 | 5 | ### 써드 파티란? 6 | 7 | - 도움을 줄 수 있는 plug in 과 library 등을 만드는 회사를 칭한다. 8 | - 개인 개발자나 프로젝트 팀, 혹은 업체등에서 제작하는 제 3자 라이브러리이다. 9 | - 예를 들어 프로그래밍 개발과 개발자 사이에 플러그인, 라이브러리, 프레임워크를 써드 파티라고 볼 수 있다. 10 | - ![thirdparty-1](https://raw.githubusercontent.com/Songwonseok/CS-Study/main/CommonSense/images/thirdparty-1.jpg) 중간에 서로를 연결시켜주는 사람이 써드파티! 11 | 12 | 13 | 14 | 15 | 16 | ### 참고블로그 17 | 18 | - [써드 파티-1](https://m.blog.naver.com/PostView.nhn?blogId=lyongh00&logNo=90070994220&proxyReferer=https:%2F%2Fwww.google.com%2F) 19 | - [써드 파티-2](https://vivabin.tistory.com/2) 20 | 21 | -------------------------------------------------------------------------------- /DataStructure/images/array-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DataStructure/images/array-1.PNG -------------------------------------------------------------------------------- /DataStructure/images/array-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DataStructure/images/array-2.PNG -------------------------------------------------------------------------------- /DataStructure/images/array-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DataStructure/images/array-3.PNG -------------------------------------------------------------------------------- /DataStructure/images/array-4.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DataStructure/images/array-4.PNG -------------------------------------------------------------------------------- /DataStructure/images/array-5.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DataStructure/images/array-5.PNG -------------------------------------------------------------------------------- /DataStructure/images/array-6.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DataStructure/images/array-6.PNG -------------------------------------------------------------------------------- /DataStructure/images/heap-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DataStructure/images/heap-1.PNG -------------------------------------------------------------------------------- /DataStructure/images/heap-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DataStructure/images/heap-2.PNG -------------------------------------------------------------------------------- /DataStructure/images/heap-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DataStructure/images/heap-3.PNG -------------------------------------------------------------------------------- /DataStructure/images/queue-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DataStructure/images/queue-1.PNG -------------------------------------------------------------------------------- /DataStructure/images/stack-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DataStructure/images/stack-1.PNG -------------------------------------------------------------------------------- /Database/Anomaly.md: -------------------------------------------------------------------------------- 1 | ## Anomaly 2 | 3 | > 정규화를 해야하는 이유는 잘못된 테이블 설계로 인해 Anomaly (이상 현상)가 나타나기 때문이다. 4 | > 5 | > 이 페이지에서는 Anomaly가 무엇인지 살펴본다. 6 | 7 | 예) {Student ID, Course ID, Department, Course ID, Grade} 8 | 9 | 1. 삽입 이상 (Insertion Anomaly) 10 | 11 | 기본키가 {Student ID, Course ID} 인 경우 -> Course를 수강하지 않은 학생은 Course ID가 없는 현상이 발생함. 결국 Course ID를 Null로 할 수밖에 없는데, 기본키는 Null이 될 수 없으므로, Table에 추가될 수 없음. 12 | 13 | 굳이 삽입하기 위해서는 '미수강'과 같은 Course ID를 만들어야 함. 14 | 15 | > 불필요한 데이터를 추가해야지, 삽입할 수 있는 상황 = Insertion Anomaly 16 | 17 | 2. 갱신 이상 (Update Anomaly) 18 | 19 | 만약 어떤 학생의 전공 (Department) 이 "컴퓨터 => 음악"으로 바뀌는 경우. 20 | 21 | 모든 Department를 "음악"으로 바꾸어야 함. 그러나 일부를 깜빡하고 바꾸지 못하는 경우, 제대로 파악 못함. 22 | 23 | > 일부만 변경하여, 데이터가 불일치 하는 모순의 문제 = Update Anomaly 24 | 25 | 3. 삭제 이상 (Deletion Anomaly) 26 | 27 | 만약 어떤 학생이 수강을 철회하는 경우, {Student ID, Course ID, Department, Course ID, Grade}의 정보 중 28 | 29 | Student ID, Department 와 같은 학생에 대한 정보도 함께 삭제됨. 30 | 31 | > 튜플 삭제로 인해 꼭 필요한 데이터까지 함께 삭제되는 문제 = Deletion Anomaly 32 | 33 | 34 | 35 | #### 참고자료 36 | 37 | - [예시 참고](https://wkdtjsgur100.github.io/anomaly/) -------------------------------------------------------------------------------- /Database/images/JOIN-1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/JOIN-1.JPG -------------------------------------------------------------------------------- /Database/images/JOIN-2-1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/JOIN-2-1.JPG -------------------------------------------------------------------------------- /Database/images/JOIN-2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/JOIN-2.JPG -------------------------------------------------------------------------------- /Database/images/JOIN-3-1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/JOIN-3-1.JPG -------------------------------------------------------------------------------- /Database/images/JOIN-3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/JOIN-3.JPG -------------------------------------------------------------------------------- /Database/images/JOIN-4-1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/JOIN-4-1.JPG -------------------------------------------------------------------------------- /Database/images/JOIN-4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/JOIN-4.JPG -------------------------------------------------------------------------------- /Database/images/JOIN-5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/JOIN-5.JPG -------------------------------------------------------------------------------- /Database/images/SQLvsNoSQL-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/SQLvsNoSQL-1.jpg -------------------------------------------------------------------------------- /Database/images/SQLvsNoSQL-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/SQLvsNoSQL-2.jpg -------------------------------------------------------------------------------- /Database/images/SQLvsNoSQL-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/SQLvsNoSQL-3.jpg -------------------------------------------------------------------------------- /Database/images/SQLvsNoSQL-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/SQLvsNoSQL-4.jpg -------------------------------------------------------------------------------- /Database/images/SQLvsNoSQL-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/SQLvsNoSQL-5.jpg -------------------------------------------------------------------------------- /Database/images/SQLvsNoSQL-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/SQLvsNoSQL-6.png -------------------------------------------------------------------------------- /Database/images/SQLvsNoSQL-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/SQLvsNoSQL-7.png -------------------------------------------------------------------------------- /Database/images/Sqlinjection-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/Sqlinjection-1.PNG -------------------------------------------------------------------------------- /Database/images/Sqlinjection-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/Sqlinjection-2.png -------------------------------------------------------------------------------- /Database/images/Sqlinjection-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/Sqlinjection-3.png -------------------------------------------------------------------------------- /Database/images/Sqlinjection-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/Sqlinjection-4.png -------------------------------------------------------------------------------- /Database/images/Sqlinjection-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/Sqlinjection-5.png -------------------------------------------------------------------------------- /Database/images/Transaction-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/Transaction-1.png -------------------------------------------------------------------------------- /Database/images/정규화-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/정규화-1.png -------------------------------------------------------------------------------- /Database/images/키정리-1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/키정리-1.JPG -------------------------------------------------------------------------------- /Database/images/키정리-2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/키정리-2.JPG -------------------------------------------------------------------------------- /Database/images/키정리-3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/키정리-3.JPG -------------------------------------------------------------------------------- /Database/images/키정리-4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/키정리-4.JPG -------------------------------------------------------------------------------- /Database/images/키정리-5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/키정리-5.JPG -------------------------------------------------------------------------------- /Database/images/키정리-6.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Database/images/키정리-6.JPG -------------------------------------------------------------------------------- /DesignPattern/images/adapter-pattern-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DesignPattern/images/adapter-pattern-1.png -------------------------------------------------------------------------------- /DesignPattern/images/adapter-pattern-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DesignPattern/images/adapter-pattern-2.png -------------------------------------------------------------------------------- /DesignPattern/images/디자인패턴개요-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DesignPattern/images/디자인패턴개요-1.png -------------------------------------------------------------------------------- /DesignPattern/images/디자인패턴개요-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DesignPattern/images/디자인패턴개요-2.png -------------------------------------------------------------------------------- /DesignPattern/images/디자인패턴개요-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DesignPattern/images/디자인패턴개요-3.png -------------------------------------------------------------------------------- /DesignPattern/images/디자인패턴개요-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/DesignPattern/images/디자인패턴개요-4.png -------------------------------------------------------------------------------- /Language/Java/Java 컴파일 과정.md: -------------------------------------------------------------------------------- 1 | # Java 컴파일 과정 2 | 3 | #### 들어가기전 4 | 5 | > Java는 OS에 독립적입니다. 그 이유는 JVM(Java Virtual Machine)이 OS와 프로그램의 사이에서 기계어로 해석해주는 역할을 하기 때문입니다. 어떠한 OS든 Java가 설치 되어 있다면 JVM에 의해서 .java 코드가 기계어로 해석될 수 있습니다. 다음은 그 과정에 대한 내용입니다. 6 | 7 | ![java-compile-1](https://github.com/Songwonseok/CS-Study/blob/main/Language/images/java-compile-1.PNG?raw=true) 8 | 9 | Sample.java 파일을 실행하기 위해 Run 버튼을 눌렀을 때 진행되는 과정은 다음과 같다. 10 | 11 | 1. Sample.java가 자바 컴파일러(javac.exe)를 통해 컴파일 진행 12 | 13 | 2. Sample.class가 생성됨 (byte code) 14 | 15 | - byte code는 반기계어 상태로 컴퓨터가 읽을 수 없다. 따라서 변환과정이 필요하다. 16 | 17 | - byte code의 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있다. 18 | 19 | 3. Sample.class를 java.exe로 실행 20 | 21 | 4. JVM의 클래스로더(Class Loader)를 통해 Sample.class를 JVM으로 가져온다. 22 | 23 | - JVM은 현재 진행을 시도하는 OS에 맞게 변환시켜줌 24 | 25 | 5. Byte Code Verifier에서 byde code를 검증 26 | 27 | 6. 실행엔진에 의해 기계어로 해석 (byte code -> binary code) 28 | 29 | - 이때 변환된 binary code는 JVM의 클래스 영역에 저장됨 30 | 31 | 7. Runtime 실행 32 | 33 | -------------------------------------------------------------------------------- /Language/images/Casting-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/Casting-1.png -------------------------------------------------------------------------------- /Language/images/Casting-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/Casting-2.png -------------------------------------------------------------------------------- /Language/images/IntrinsicLock-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/IntrinsicLock-1.png -------------------------------------------------------------------------------- /Language/images/OverridingvsOverroading-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/OverridingvsOverroading-1.jpg -------------------------------------------------------------------------------- /Language/images/OverridingvsOverroading-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/OverridingvsOverroading-2.jpg -------------------------------------------------------------------------------- /Language/images/String-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/String-1.png -------------------------------------------------------------------------------- /Language/images/String-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/String-2.png -------------------------------------------------------------------------------- /Language/images/String-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/String-3.png -------------------------------------------------------------------------------- /Language/images/java-JVM-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/java-JVM-1.PNG -------------------------------------------------------------------------------- /Language/images/java-JVM-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/java-JVM-2.PNG -------------------------------------------------------------------------------- /Language/images/java-JVM-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/java-JVM-3.PNG -------------------------------------------------------------------------------- /Language/images/java-Primitive Type vs Reference Type-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/java-Primitive Type vs Reference Type-1.PNG -------------------------------------------------------------------------------- /Language/images/java-callbyvalue-callbyreference-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/java-callbyvalue-callbyreference-1.png -------------------------------------------------------------------------------- /Language/images/java-callbyvalue-callbyreference-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/java-callbyvalue-callbyreference-2.png -------------------------------------------------------------------------------- /Language/images/java-compile-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/java-compile-1.PNG -------------------------------------------------------------------------------- /Language/images/java-garbage-collection-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/java-garbage-collection-1.png -------------------------------------------------------------------------------- /Language/images/java-garbage-collection-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/java-garbage-collection-2.png -------------------------------------------------------------------------------- /Language/images/java-thread-활용-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/java-thread-활용-1.png -------------------------------------------------------------------------------- /Language/images/js-closure-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/js-closure-1.PNG -------------------------------------------------------------------------------- /Language/images/js-closure-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/js-closure-2.PNG -------------------------------------------------------------------------------- /Language/images/js-event-loop-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/js-event-loop-1.PNG -------------------------------------------------------------------------------- /Language/images/js-event-loop-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/js-event-loop-2.PNG -------------------------------------------------------------------------------- /Language/images/js-event-loop-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/js-event-loop-3.PNG -------------------------------------------------------------------------------- /Language/images/js-event-loop-4.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/js-event-loop-4.PNG -------------------------------------------------------------------------------- /Language/images/js-scope-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/js-scope-1.PNG -------------------------------------------------------------------------------- /Language/images/js-scope-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/js-scope-2.PNG -------------------------------------------------------------------------------- /Language/images/js-scope-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/js-scope-3.PNG -------------------------------------------------------------------------------- /Language/images/promotion-casting-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/promotion-casting-1.png -------------------------------------------------------------------------------- /Language/images/promotion-casting-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/promotion-casting-2.png -------------------------------------------------------------------------------- /Language/images/promotion-casting-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Language/images/promotion-casting-3.png -------------------------------------------------------------------------------- /Network/images/HTTPS-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/HTTPS-1.PNG -------------------------------------------------------------------------------- /Network/images/OSI7계층-1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/OSI7계층-1.JPG -------------------------------------------------------------------------------- /Network/images/OSI7계층-2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/OSI7계층-2.JPG -------------------------------------------------------------------------------- /Network/images/TCP-3-way-handshake&4-way-handshake-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCP-3-way-handshake&4-way-handshake-1.png -------------------------------------------------------------------------------- /Network/images/TCP-3-way-handshake&4-way-handshake-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCP-3-way-handshake&4-way-handshake-2.png -------------------------------------------------------------------------------- /Network/images/TCPIP-흐름제어&혼잡제어-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCPIP-흐름제어&혼잡제어-1.png -------------------------------------------------------------------------------- /Network/images/TCPIP-흐름제어&혼잡제어-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCPIP-흐름제어&혼잡제어-2.png -------------------------------------------------------------------------------- /Network/images/TCPIP-흐름제어&혼잡제어-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCPIP-흐름제어&혼잡제어-3.png -------------------------------------------------------------------------------- /Network/images/TCPIP-흐름제어&혼잡제어-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCPIP-흐름제어&혼잡제어-4.png -------------------------------------------------------------------------------- /Network/images/TCPIP-흐름제어&혼잡제어-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCPIP-흐름제어&혼잡제어-5.png -------------------------------------------------------------------------------- /Network/images/TCPIP-흐름제어&혼잡제어-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCPIP-흐름제어&혼잡제어-6.png -------------------------------------------------------------------------------- /Network/images/TCPIP-흐름제어&혼잡제어-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCPIP-흐름제어&혼잡제어-7.png -------------------------------------------------------------------------------- /Network/images/TCPUDP-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCPUDP-1.png -------------------------------------------------------------------------------- /Network/images/TCPUDP-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCPUDP-2.png -------------------------------------------------------------------------------- /Network/images/TCPUDP-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCPUDP-3.png -------------------------------------------------------------------------------- /Network/images/TCPUDP-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/TCPUDP-4.png -------------------------------------------------------------------------------- /Network/images/load-balance-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/load-balance-1.PNG -------------------------------------------------------------------------------- /Network/images/load-balance-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/load-balance-2.PNG -------------------------------------------------------------------------------- /Network/images/load-balance-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/load-balance-3.PNG -------------------------------------------------------------------------------- /Network/images/load-balance-4.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/load-balance-4.PNG -------------------------------------------------------------------------------- /Network/images/load-balance-5.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/load-balance-5.PNG -------------------------------------------------------------------------------- /Network/images/load-balance-6.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/load-balance-6.PNG -------------------------------------------------------------------------------- /Network/images/load-balance-7.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/load-balance-7.PNG -------------------------------------------------------------------------------- /Network/images/대칭키공개키-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/대칭키공개키-1.PNG -------------------------------------------------------------------------------- /Network/images/대칭키공개키-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/대칭키공개키-2.PNG -------------------------------------------------------------------------------- /Network/images/대칭키공개키-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/대칭키공개키-3.PNG -------------------------------------------------------------------------------- /Network/images/대칭키공개키-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Network/images/대칭키공개키-4.png -------------------------------------------------------------------------------- /OS/images/IPC-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/IPC-1.PNG -------------------------------------------------------------------------------- /OS/images/IPC-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/IPC-2.PNG -------------------------------------------------------------------------------- /OS/images/IPC-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/IPC-3.png -------------------------------------------------------------------------------- /OS/images/Interrupt-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/Interrupt-1.PNG -------------------------------------------------------------------------------- /OS/images/PCBContextSwitching-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/PCBContextSwitching-1.png -------------------------------------------------------------------------------- /OS/images/PCBContextSwitching-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/PCBContextSwitching-2.png -------------------------------------------------------------------------------- /OS/images/deadlock-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/deadlock-1.PNG -------------------------------------------------------------------------------- /OS/images/deadlock-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/deadlock-2.jpg -------------------------------------------------------------------------------- /OS/images/process-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/process-1.png -------------------------------------------------------------------------------- /OS/images/process-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/process-2.png -------------------------------------------------------------------------------- /OS/images/process-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/process-3.png -------------------------------------------------------------------------------- /OS/images/processaddress-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/processaddress-1.png -------------------------------------------------------------------------------- /OS/images/processaddress-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/processaddress-2.png -------------------------------------------------------------------------------- /OS/images/processaddress-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/processaddress-3.png -------------------------------------------------------------------------------- /OS/images/processaddress-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/processaddress-4.png -------------------------------------------------------------------------------- /OS/images/scheduling-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/scheduling-1.PNG -------------------------------------------------------------------------------- /OS/images/scheduling-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/scheduling-2.PNG -------------------------------------------------------------------------------- /OS/images/scheduling-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/scheduling-3.PNG -------------------------------------------------------------------------------- /OS/images/scheduling-4.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/scheduling-4.PNG -------------------------------------------------------------------------------- /OS/images/system-call-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/system-call-1.png -------------------------------------------------------------------------------- /OS/images/system-call-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/system-call-2.png -------------------------------------------------------------------------------- /OS/images/system-call-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/system-call-3.png -------------------------------------------------------------------------------- /OS/images/thread-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/thread-1.png -------------------------------------------------------------------------------- /OS/images/thread-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/thread-2.png -------------------------------------------------------------------------------- /OS/images/운영체제란-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/운영체제란-1.png -------------------------------------------------------------------------------- /OS/images/운영체제란-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/OS/images/운영체제란-2.png -------------------------------------------------------------------------------- /Web/images/HTTP-Mehtod-1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/HTTP-Mehtod-1.JPG -------------------------------------------------------------------------------- /Web/images/RESTful-1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/RESTful-1.JPG -------------------------------------------------------------------------------- /Web/images/browser-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/browser-1.PNG -------------------------------------------------------------------------------- /Web/images/browser-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/browser-2.PNG -------------------------------------------------------------------------------- /Web/images/browser-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/browser-3.PNG -------------------------------------------------------------------------------- /Web/images/bublling&caturing-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/bublling&caturing-1.PNG -------------------------------------------------------------------------------- /Web/images/bublling&caturing-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/bublling&caturing-2.PNG -------------------------------------------------------------------------------- /Web/images/delegation.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/delegation.PNG -------------------------------------------------------------------------------- /Web/images/performance-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/performance-1.PNG -------------------------------------------------------------------------------- /Web/images/performance-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/performance-2.PNG -------------------------------------------------------------------------------- /Web/images/performance-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/performance-3.PNG -------------------------------------------------------------------------------- /Web/images/performance-4.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/performance-4.PNG -------------------------------------------------------------------------------- /Web/images/performance-5.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/performance-5.PNG -------------------------------------------------------------------------------- /Web/images/performance-6.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/performance-6.PNG -------------------------------------------------------------------------------- /Web/images/performance-7.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/performance-7.JPG -------------------------------------------------------------------------------- /Web/images/reflow&repaint-1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/reflow&repaint-1.PNG -------------------------------------------------------------------------------- /Web/images/reflow&repaint-2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/reflow&repaint-2.PNG -------------------------------------------------------------------------------- /Web/images/reflow&repaint-3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/reflow&repaint-3.PNG -------------------------------------------------------------------------------- /Web/images/reflow&repaint-4.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Songwonseok/CS-Study/02a463f8f7203ff2d8f0529457ea74bee5e72fff/Web/images/reflow&repaint-4.PNG -------------------------------------------------------------------------------- /docs/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ### [문제1](문제 링크) 2 | 3 | 4 | 5 | **풀이방식** 6 | 7 | 8 | 9 | --- 10 | 11 | ### [문제2](문제 링크) 12 | 13 | 14 | 15 | **풀이방식** 16 | 17 | 18 | 19 | --- 20 | 21 | ### [문제3](문제 링크) 22 | 23 | 24 | 25 | **풀이방식** 26 | 27 | 28 | 29 | --- 30 | 31 | ### [문제4](문제 링크) 32 | 33 | 34 | 35 | **풀이방식** 36 | 37 | 38 | 39 | --- 40 | 41 | ### [문제5](문제 링크) 42 | 43 | 44 | 45 | **풀이방식** 46 | 47 | 48 | 49 | --- 50 | 51 | ### [문제6](문제 링크) 52 | 53 | 54 | 55 | **풀이방식** 56 | 57 | 58 | 59 | 60 | --------------------------------------------------------------------------------