단단해지기

    [프로그래머스] 입실 퇴실 Javascript

    [프로그래머스] 입실 퇴실 Javascript

    https://programmers.co.kr/learn/courses/30/lessons/86048 코딩테스트 연습 - 7주차 사회적 거리두기를 위해 회의실에 출입할 때 명부에 이름을 적어야 합니다. 입실과 퇴실이 동시에 이뤄지는 경우는 없으며, 입실 시각과 퇴실 시각은 따로 기록하지 않습니다. 오늘 회의실에는 programmers.co.kr 한 방의 출입했던 사람들에 대하여 입실 순서와 퇴실 순서가 주어질 때 반드시 만날 수 밖에 없는 사람을 구하는 문제이다. 퇴실은 입실하기 전에는 일어날 수 없는 행동이다. 이에 따라 퇴실 순서와 입실 순서에 각각 인덱스를 두는 투포인터 기법을 사용했다. 퇴실 순서에 해당하는 사람이 입장하기 전까지 입실 순서에 따라 입장시킨다. 1 을 모든 사람이 퇴실할 때까지 반..

    [프로그래머스] 복서 정렬하기 Javascript

    [프로그래머스] 복서 정렬하기 Javascript

    https://programmers.co.kr/learn/courses/30/lessons/85002 코딩테스트 연습 - 6주차_복서 정렬하기 복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요 programmers.co.kr 복서들의 정보가 주어질 때, 이를 토대로 복서 정보가 담긴 배열을 정렬하는 문제이다. 즉, sort의 compare 함수를 정의하면 된다. Javascript의 sort는 compare 함수에서 음수를 반환하면 1번 파라미터가 앞의 순서에 놓이도록 정렬된다. winRate가 더 높은 요소를 앞에 배치하고 싶다면 co..

    [프로그래머스]  모음사전 Javascript

    [프로그래머스] 모음사전 Javascript

    https://programmers.co.kr/learn/courses/30/lessons/84512 코딩테스트 연습 - 5주차_모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr 이 모음 사전은 다음과 같은 순서로 단어가 나열된다. 경우의 수를 이용하면 쉽게 해결할 수 있을 것으로 생각했다. 우선, [A, E, I, O, U] 라는 배열을 만들었다. 항상 이 순서대로 단어가 나타나므로 이 배열의 인덱스 를 활용해 몇 번째 단어인지 유추할 수 있다. A로 시작하는 단어는 총 몇개일까? ..

    [백준/BOJ 알고리즘] 17845 수강 과목 C++

    [백준/BOJ 알고리즘] 17845 수강 과목 C++

    https://www.acmicpc.net/problem/17845 17845번: 수강 과목 첫줄에 서윤이의 최대 공부시간 N (1 ≤ N ≤ 10,000), 과목 수 K (1 ≤ K ≤ 1,000)이 공백을 사이에 두고 주어진다. 이후 K개의 줄에 중요도 I (1 ≤ I ≤ 100,000), 필요한 공부시간 (1 ≤ T ≤ 10,000)이 www.acmicpc.net 0-1 Knapsack 문제이다. 링크 에서 0-1 Knapsack에 대해 알아볼 수 있다. (필자가 작성한 글임) bottom-up 방식으로 DP를 구성하면 된다. O(NK)의 시간복잡도를 갖는다. #include #include #define MAX_N 10001 #define MAX_K 1001 using namespace std; ..

    [백준/BOJ 알고리즘] 10830 행렬 제곱 C++

    [백준/BOJ 알고리즘] 10830 행렬 제곱 C++

    https://www.acmicpc.net/problem/10830 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 주어진 행렬 A에 대하여 입력 B만큼 제곱한 행렬을 출력하는 문제이다. B는 100,000,000,000 이하의 값을 갖는다. 즉, A를 B번 제곱하는 방식으로는 해결할 수 없다. 분할정복 을 통해 문제를 해결할 수 있다. A의 거듭제곱은 다음과 같이 나타낼 수 있다. 분할정복을 통해 100,000,000,000번 제곱한 값을 찾는다면, 약 36~7번의 연산으로 찾을 수 있다. 최종적으로 시간복잡도는 다음과 같..

    [Network] HTTP와 HTTPS

    [Network] HTTP와 HTTPS

    HTTP HTTP = HyperText Transfer Procol OSI 7계층중 7계층 응용계층에 속하는 프로토콜이다. Stateless 한 특성을 갖는 프로토콜이다. Method, Path, Version, Header, Body 등으로 구성된다. Request와 Response로 통신을 하는 비연결성 프로토콜이다. 단점 평문 텍스트, 즉 암호화되지 않은 텍스트를 전송하는 프로토콜로, 중간자 공격에 취약하다. 변조, 위장, 도청에 취약하다. HTTPS HTTPS = HyperText Transfer Protocol over Secure Socket Layer = HTTP over SSL = HTTP over TLS 쉽게 말해서 HTTP의 단점인 보안성을 보완한 프로토콜이다. 데이터 암호화 기능이 추..

    [Network] TCP와 UDP

    [Network] TCP와 UDP

    Computer Networking: A Top-Down Approach, 7th Edition Computer Networking A Top-Down Approach Seventh Edition 을 참고하여 작성하였습니다. TCP ( Transmission Control Protocol ) 말그대로 전송 제어 프로토콜이다. Transmission Control Protocol을 줄여 TCP라고 부른다. TCP는 OSI 7계층에서 4계층인 전송 프로토콜에 해당한다. Internet Protocol인 IP와 함께 쓰인다. 흔히들 TCP/IP라고 칭한다. TCP/IP에서 TCP는 데이터의 조각들을 reliable하게 전송하기 위한 프로토콜이고, IP는 데이터를 빠르게 목적지까지 전송하기 위한 프로토콜이다. ..

    [OS] 캐시 메모리

    [OS] 캐시 메모리

    이 포스팅은 운영체제 공룡책 9판을 참고하여 작성되었습니다. 캐시 메모리 캐시 메모리란? 두 구성요소 간 액세스 시간이나 전송 속도의 차이가 큰 경우 성능을 향상하기 위해 사용하는 하드웨어 캐시. 혹은 메모리를 말한다. Name registers cache main memory solid state disk magnetic disk Typical size < 1 KB < 16MB < 64GB < 1 TB < 10 TB Implementation technology custom memory with multiple ports CMOS on-chip or off-chip CMOS SRAM CMOS SRAM flash memory magnetic disk Access time (ns) 0.25 - 0.5 0...

    [백준/BOJ 알고리즘] 16236 아기상어 C++

    [백준/BOJ 알고리즘] 16236 아기상어 C++

    > www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가�� www.acmicpc.net 아기 상어가 바다에서 엄마 상어 없이 얼마나 물고기를 잡아먹으며 버틸 수 있는가.. 하는 문제이다. 뚜루뚜두둡. 더 이상 먹을 물고기가 없을 때까지의 시간을 계산하여 출력하면 된다! 문제 조건이 생각보다 까다롭고 이해하기 어려워서 좀 헤맸던 문제이다... 처음엔 좌표와 비용을 갖는 이중pair(?) 자료형을 큐에 넣고 작업했는데, 시간초과가 나서 비용 정보를 갖는 배열을 생성해서 해결했다. 문제의..

    [백준/BOJ 알고리즘] 1039 교환 C++

    > www.acmicpc.net/problem/1039 1039번: 교환 첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, K는 10보다 작거나 같은 자연수이다. www.acmicpc.net 원래 이 문제를 풀 생각은 없었는데, 한 친구가 못 풀겠다고 같이 풀자고해서 풀게 되었다. 기존 그래프 탐색 문제와는 좀 다른 느낌이어서 나름 재밌게 풀었다. 문제의 핵심 N은 최대 999,999 의 값을 갖는다. 즉 최대 6자리 자연수라는 것. K가 10보다 작으니, 전부 구해도 된다. K번 연산을 한 동안 나온 최대값이 아닌, K번째 연산을 했을 때 나올 수 있는 최대값을 구해야한다. 큐를 이용하여 구현했는데, 큐에 담기게 될 것은, 각 자리의 숫자가 아닌 i (0 k) b..