분류 전체보기

    [Algorithm] BOJ 다리놓기 - 1010번

    1. 문제 풀이 다리 놓기는 일직선 모양의 강의 동쪽과 서쪽에 다리를 겹치지 않게 놓을 수 있는 경우의 수를 구하는 문제이다. 서쪽과 동쪽에는 각 N개와 M개의 다리를 둘 수 있는 곳이 있고 0 > ca; //경우의 수 long long count = 1; for (int i ..

    [Algorithm] BOJ LCS 2 - 9252번

    1. 문제 풀이 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 처음에는 일치하는 문자열을 찾아 char 배열에 저장 한 뒤 바로 출력하는 방식으로 풀어보려 했지만 구현이 복잡해져 정확히 먼저 수를 구한 뒤 가장 긴 수열을 찾아 역추적하는 방식으로 풀었다... 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다. 우선 1000자를 담을 수 있는 이차원배열을 0으로 초기화 한뒤 문자가 일치할 시에 이전에 일치한 개수에 1을 더해가는 방식으로 구현했다. 아래 표를 보면 일치하는 문자를 만나면 이전 인덱스의 값에 + 1을 하고 result[i][j] = result[i - 1][j - 1] + 1; 불일치 하면 그대로 i와 j 중 더 큰 값을 넣어 줌으로 긴 카운트를..

    [Algorithm] BOJ 동전 1 - 2293번

    1. 문제 풀이 n 가지 종류의 동전으로 그 가치의 합이 k원이 될 수 있는 경우의 수를 구하는 문제이다. 각각의 동전은 몇개라도 사용할 수 있다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 으로 주어진다. 우선 해당 값을 만들 수 있는 경우의 수는 값의 배수 일때 1번. 순열으로 만들었을때 두가지 동전으로 만들 수 있는 경우의 수 = 이전 동전으로 만들 수 있는 경우의 수 + 현재 동전으로 만들 수 있는 경우의 수 가 되는것이다. 이것을 점화식으로 인덱스에 기록해가며 더해가면 해당 동전들로 가능한 경우의 수를 구할 수 있다. 처음 첫 인덱스에 값을 1로 설정하고 그 뒤를 0으로 초기화해 처음 coin의 값이 들어갈 때 1이 더해지도록 했다. 2. 코드 #include using namespa..

    [Algorithm] BOJ 팰린드롬? - 10942번

    1. 문제 풀이 팰린드롬? 문제는 자연수 N 안에서 S번째와 E번째 수까지 팰린드롬, 곧 거꾸로 읽어도 제대로 읽는 것과 동일한지 알아내는 문제이다. 팰린드롬인 경우에는 1, 아닌 경우에는 0을 출력한다. 우선 S부터 E사이의 차를 거리라 부르고 S와 E의 사이의 결과를 담을 이차원배열을 N*N 크기로 생성했다. 펠린드롬의 패턴은 S와 E 보다 1씩 줄어든 거리가 팰린드롬이고 S와 E가 같으면 팰린드롬이 되는 규칙을 이용해 하나씩 1로 채워가는 방식으로 풀이하였다. 거리가 0, 곧 같은 인덱스 일때는 1로 모두 초기화를 하고 거리가 1일때 j , j+1이 같으면 1로 설정했다. 거리가 2이상일때는 거리를 j , 대상인덱스를 z 로 while 문을돌려가며 z / j + z 가 같고 그 안에 직전 값이 1이..

    [Docker] 🐳 도커란?

    1. Docker 란? Docs에서 말하는 Docker는 클라우드 또는 온-프레미스로 실행될 수 있는 이식 가능하고 문제를 스스로 해결할 수 있는 컨테이너로서 애플리케이션 배포를 자동화하기 위한 오픈 소스 프로젝트입니다. 라고 설명하고 있습니다. 쉽게 말하면 도커는 애플리케이션을 컨테이너 기반 배포 및 공유하는 오픈 소스 가상화 플랫폼입니다. 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줍니다. 도커는 2013년 파이콘에서 처음 소개되어 현재까지 많은 기업에서 사용되고 있습니다. 왜 도커를 사용하는지에 대해 알아보기 위해 도커의 여러 개념에 대해 알아봅시다. 🐳 컨테이너(container) 란? 컨테이너는 애플리케이션 또는 서비스와 ..

    [Algorithm] DP (Dynamic Programming) : 동적 계획법

    중복되는 연산을 줄인다 우선 다이나믹 프로그래밍의 다이나믹은 사실 간지를 위해 사용한 이름으로 동적인 의미와는 상관이 없다... 다이나믹 프로그래밍은 약간 더 메모리를 사용하면 연산속도를 비약적으로 증가시킬 수 있는 방법으로 두가지 조건을 만족할 때 사용할 수 있다. 1. 큰 문제를 작은 문제로 나눌 수 있다. 2. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다. 두 조건을 만족하는 가장 대표적인 예시는 피보나치 수열이다. 피보나치 수열은 점화식을 가지고 있다. 이전 2개의 항의 값에 영향을 받는다는 점을 이용해 재귀함수로 구현할 수 있다. 아래는 점화식을 재귀함수로 구현한 코드이다. #include using namespace std; intfibonacci(int n) { if (..

    [42Seoul] ft_server (Docker + LEMP)

    Ft_server 요약: 이번 프로젝트의 과제는 시스템 관리입니다. 여러분은 도커를 발견하고 여러분의 첫 번째 웹 서버를 구축할 것입니다. Introduction 이번 주제는 여러분에게 시스템 관리에 대해서 소개하려 합니다. 스크립트를 사용하여 업무를 자동화하는 것이 중요하다는 것을 깨닫게 될 것입니다. 이를 위해, 여러분은 "도커"라는 기술을 발견하여 그것을 완전한 웹 서버를 설치하는 데 사용할 것입니다. 이 서버는 여러 서비스를 실행할 것입니다: Wordpress, phpMyAdmin, 그리고 SQL database. General instructions 서버 구성에 필요한 모든 파일을 srcs 폴더 안에 넣어놔야 합니다. 도커파일은 저장소의 루트에 있어야 합니다. 그것은 여러분의 컨테이너를 만들 것..

    [42Seoul] ft_printf - 나의 printf 구현하기

    Intorduction 이 프로젝트는 꽤 간단합니다. 여러분은 printf 함수를 다시 구현할 것입니다. 희망컨대 여러분들은 cheating의 두려움 없이 추후 프로젝트에서 ft_printf를 재사용할 수 있습니다. Mandatory part Program name libftprintf.a Turn in files *.c, /.c, *.h, /.h, Makefile Makefile all, clean, fclean, re, bonus External functs. malloc, free, write, va_start, va_arg, va_copy, va_end Libft authorized yes Description 실제 printf의 모방 함수인 ft_printf가 포함된 라이브러리를 작성하십시오 f..

    [Computer Science] 메모리구조 (Memory Structure)

    프로그램 실행 순서 프로그램의 실행을 위해서는 먼저 프로그램이 메모리에 로드가 되어 있어야한다. 프로그램을 실행하면 os 는 메모리에 공간을 할당하게 된다. 프로그램의 실행 순서는 아래와 같다. 메모리 구조 메모리 공간은 다음과 같은 영역으로 나누어진다. 1. 코드(code) 영역 2. 데이터(data) 영역 3. 스택(stack) 영역 4. 힙(heap) 영역 1. 코드(code) 영역 메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code) 영역이라고도 부른다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 된다. 2. 데이터(data) 영역 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역이다. 데이..

    [Algorithm] 탐색 알고리즘 DFS/BFS

    DFS (Depth-First-Search) 깊이 우선 탐색이라고도 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 이다. DFS의 장점 현 경로상의 노드를 기억하기 때문에 적은 메모리를 사용한다. 찾으려는 노드가 깊은 단계에 있는 경우 BFS 보다 빠르게 찾을 수 있다. DFS의 단점 해가 없는 경로를 탐색 할 경우 단계가 끝날 때까지 탐색합니다. 효율성을 높이기 위해서 미리 지정한 임의 깊이까지만 탐색하고 해를 발견하지 못하면 빠져나와 다른 경로를 탐색하는 방법을 사용한다. DFS를 통해서 얻어진 해가 최단 경로라는 보장이 없습니다. DFS는 해에 도착하면 탐색을 종료하기 때문이다. BFS (Breadth-First-Search) 너비 우선 탐색이라고도 부르며 가까운 노드부터 탐색하는 알..