본문 바로가기

전체 글

(126)
[CentOS 7] firewall-cmd 방화벽 설정 서버 운영을 위한 기초 지식!외부에서 접근 가능한 포트를 등록하고 삭제하는 방법, 포트 A로 들어온 요청을 포트 B로 보내는 방법, 그리고 다양한 옵션들에 대한 설명입니다.따라해봅시다. 쉬워요!! ▶현재 열려있는 포트 확인1. netstat -ntl-n : 주소나 포트를 숫자로 표현 -t : TCP로 연결된 포트를 확인 -l : LISTEN 상태인 포트를 확인 ▶현재 활성화된 default network zone 확인1. sudo firewall-cmd --get-active-zone (변경한 적이 없다면 public) - 각 zone에 대한 설명 (출처 : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1858) ▶..
라즈베리 파이와 아두이노의 차이점과 활용 ▶IoT 플랫폼위키피디아에서는 플랫폼 기술을 "제품 개발을 가능하게 하는 기술이나, 현재 또는 미래의 개발을 지원하는 프로세스"라고 설명하고 있습니다. 하드웨어에서의 플랫폼이란, 다양한 제품을 만들어내는 기반과 도구를 말합니다. IoT 기술을 활용한 프로젝트를 진행할 때 모든 것을 처음부터 직접 개발한다면, 정작 중요한 애플리케이션 구현에 집중할 수 있는 시간이 줄어들게 됩니다. 그래서 우리는 플랫폼이 필요합니다. IoT 프로젝트를 진행할 때 편리하게 사용할 수 있는 오픈소스 기반의 하드웨어 플랫폼으로 라즈베리 파이, 아두이노가 대표적입니다. [아두이노 vs 라즈베리 파이] 이미지 출처 : https://m.blog.naver.com/PostView.nhn?blogId=simjk98&logNo=22106..
각 방향으로 이동한 위치 값을 반복문으로 구하는 방법 ▶방향에 따른 이동 위치 값 반복문으로 구하기알고리즘 문제를 해결하다 보면 어떤 좌표에서 4~8방향으로 이동한 위치 값이 필요한 경우가 있습니다.만약 매번 모든 방향으로 이동한 위치 값을 확인해야 한다면 반복문을 통해 구현하는 것이 편리합니다. 예를 들어, 2차원 공간의 (x,y)의 위치에서 상/하/좌/우 네 방향으로 한 칸씩 이동한 위치 값이 필요하다면 (x는 행, y는 열을 나타냅니다!)상 : (x-1, y)하 : (x+1, y)좌 : (x, y-1)우 : (x, y+1) 이렇게 네 개의 위치 값을 구해야 합니다. 이해를 돕기 위해 (3,3)에서 상/하/좌/우 네 방향으로 이동했을 때 위치 좌표값을 나타낸 그림을 그려보았습니다. 이 네 방향의 위치 값을 편하게 구하기 위해서 아래와 같은 방법을 씁니다..
조합 생성 알고리즘 한번에 정리하기 ▶조합 (Combination)서로 다른 n개의 원소 중에 r개를 순서와 상관 없이 뽑은 것을 조합이라고 합니다. 뽑아낼 수 있는 조합의 모든 경우를 알아내야 하는 문제들이 많습니다.기본적인 구현 문제이지만 공부하지 않으면 어떻게 구현해야 할지 몰라 막막하게 느껴지기도 합니다. 조합을 코드로 구현하기 위해서 재귀 함수에 익숙해질 필요가 있습니다.재귀함수를 이해하기 위해 백준 온라인 저지에서 '피보나치 수를 구하는 문제'나 'N과 M'과 같은 문제들을 풀면서 재귀함수에 익숙해지도록 연습하는 것을 추천합니다. 1234567891011121314151617181920212223242526272829303132333435#include#includeusing namespace std; int n,r;vector..
그래프(Graph)를 표현하는 방법에 대하여 ▶그래프그래프는 정점들의 집합 V와 간선들의 집합 E로 이루어진 자료구조입니다. ▶그래프 표현 방법그래프를 표현하는 방법으로 인접 행렬과 인접 리스트가 있습니다. 정점의 개수가 N개인 그래프를 인접 행렬로 표현하려면 (N+1) x (N+1) 크기의 2차원 배열이 필요합니다. 무 방향 그래프인 경우에 1번 정점과 2번 정점이 연결되어있다면 (1,2)와 (2,1)에 모두 1을 저장해 두 정점이 연결되었음을 표현합니다. 만약 방향 그래프인 경우에 1번 정점에서 2번 정점으로 화살표가 그려져있다면 (1,2)에만 1을 저장하는 방식입니다. int adj[5][5] = {0,}; // 1번 정점과 2번 정점이 연결된 경우adj[1][2] = 1; adj[2][1] = 1; 정점의 개수가 N개인 그래프를 인접 리스트..
해싱(Hashing)에 대하여 ▶해싱 (Hashing)해싱은 일종의 데이터 관리 기법이며, 키(key)를 해시값(Hash Value)에 매핑하는 것을 말합니다.해시함수에 의해 키가 해시값으로 변환되며, 해시함수는 인풋으로 키를 받아서 아웃풋으로 해시값을 반환하도록 구현합니다. 해시함수는 다른 두 개의 키에 대해 동일한 해시값을 반환할 수 있습니다.입력 가능한 모든 키에 대해, 키를 유일한 해시값으로 만들어줄수록 좋은 해시함수로 평가받을 수 있습니다. 키를 유일한 해시값으로 변환하는데 O(1)의 시간이 걸린다면,해당 키가 이미 존재하는지 탐색하는 연산을 O(1)의 시간에 처리할 수 있다는 뜻이 되므로 해싱은 상당히 유용하게 사용될 수 있는 기법입니다. HashFunction( key ) → Hash Value ▲ 문자열 타입의 키를 정..
[알고리즘] 시간 복잡도 쉽게 이해하기 ▶시간 복잡도, 이정도는 알고 있어야 한다! 알고리즘을 공부할 때 가장 먼저 나오는 개념이 시간 복잡도입니다. 문제 해결에 있어서 시간 복잡도를 줄이는 방법을 이해하고 활용하는 것이 알고리즘을 배우는 주된 목적이기 때문이죠. 시간 복잡도를 표기할 때 가장 일반적으로 사용되는 것은 빅오(O)-표기법 입니다. 어떤 알고리즘으로 문제를 해결하기 전에 입력 값에 따라 무엇을 어떤 변수로 놓을지 결정하고 난 뒤, 문제를 해결하는데 필요한 연산의 횟수를 식으로 구합니다. 구해진 식에서 최고 차항만을 남깁니다. 그 식에 최악의 입력 크기 값을 대입해보고 그 때에도 충분히 빠른 시간 내에 해결이 가능한지를 판단합니다. 예를들어 1부터 N까지의 누적합을 구하는 문제가 있다고 합시다. N의 범위는 1
[BOJ] 백준 15657. N과 M (8) ▶문제설명[BOJ] 백준 15657. N과 M (8)https://www.acmicpc.net/problem/15657 ▶ 설계[문제]N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다.고른 수열은 비내림차순이어야 한다.길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 중복되는 수열을 여러 번 출력하면 안된다. N과 M (5) 문제와 거의 같은 문제입니다.진하게 표시된 '같은 수를 여러 번 골라도 된다' 라는 조건과 '고른 수열은 비내림차순이어야 한다' 라는 조건이 추가되었습니다...
[BOJ] 백준 15656. N과 M (7) ▶문제설명[BOJ] 백준 15656. N과 M (7)https://www.acmicpc.net/problem/15656 ▶ 설계[문제]N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.N개의 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다. 중복되는 수열을 여러 번 출력하면 안된다. N과 M (5) 문제와 거의 같은 문제입니다.진하게 표시된 '같은 수를 여러 번 골라도 된다'는 조건이 추가되었습니다. [N과 M (5) 풀이 바로가기] : https://it-earth.tistory.com/143 N과 M (5) 문제에서는 나왔던 수를 체크하면서 수가 중복되지 않도록 해주었는데그 부분만 제..
[BOJ] 백준 15655. N과 M (6) ▶문제설명[BOJ] 백준 15655. N과 M (6)https://www.acmicpc.net/problem/15655 ▶ 설계[문제]N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수는 모두 다른 수이다.N개의 자연수 중에서 M개를 고른 수열고른 수열은 오름차순이어야 한다. N과 M (5) 문제와 다른점은 진한 글씨로 표시된 부분 밖에 없습니다.N과 M (5) 풀이 링크 ( https://it-earth.tistory.com/143 ) 무식하게 모든 경우를 다 해보면 되는 문제입니다. (브루트 포스)이런 식의 문제는 재귀로 구현하면 편합니다. 주어진 n개의 수 중에 아직 사용되지 않은 수를 벡터에 push_back 하면서 ..
[BOJ] 백준 15654. N과 M (5) ▶문제설명 [BOJ] 백준 15654. N과 M (5) https://www.acmicpc.net/problem/15654 ▶ 설계[문제] N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.N개의 자연수 중에서 M개를 고른 수열 무식하게 모든 경우를 다 해보면 되는 문제입니다. (브루트 포스) 이런 식의 문제는 재귀로 구현하면 편합니다. 주어진 n개의 수 중에 아직 사용되지 않은 수를 벡터에 push_back 하면서 가능한 경우를 모두 탐색합니다. 사용된 수의 인덱스를 체크하기 위해 1차원 bool 배열을 사용합니다. 벡터의 사이즈가 M이 되면 M개의 수를 선택한 것이 되므로 수열을 출력합니다. 재귀호..
[BOJ] 백준 15652. N과 M (4) ▶문제설명[BOJ] 백준 15652. N과 M (4)https://www.acmicpc.net/problem/15652 ▶ 설계[문제]자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열같은 수를 여러 번 골라도 된다.고른 수열은 비내림차순이어야 한다.길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 문제에서 N과 M (1)과 다른점은 진한 글씨로 표시된 부분 밖에 없습니다.N과 M(1) 풀이 링크 ( https://it-earth.tistory.com/138 ) 비내림차순의 수열이란 1 2 2 3 4 4 4 5 6 7 와 같이, '오름차순..