-
2020.09.18
조건문이나 함수 없이 반올림 하기
조건문이나 round() 함수를 사용하지 않고 간단한 조건만으로 반올림을 할 수 있는 방법이 있다. 예를 들어 5자리의 정수를 받아서 100의 자리에서 반올림한 결과 값을 출력하는 프로그램을 작성할 때, (100의 자리의 숫자 >= 5) * 1000의 값을 더해주면 된다. >= 5 이라는 조건을 넣어주어 100의 자리의 숫자가 5 이상일 경우 1(True), 그렇지 않을 경우 0(False)이 나오도록 한 후 그 값을 1000과 곱하여 더해주면 되는 것이다. 1234567891011121314151617#include int main() { int input, tenThousand, thousand, hundred; scanf("%d", &input); tenThousand = input / 10000;..
-
2020.09.11
숫자 출력 시 앞에 0을 붙여 자리수 채우기
C 언어에서 숫자 출력 시, 앞에 0을 붙여 자리수를 채울 수 있는 방법이 있다.printf()로 출력할 경우, 형식 지정자에 0n(n: 숫자)을 붙이면 된다. 12345678#include int main() { printf("%d\n", 125); printf("%5d\n", 125); printf("%05d\n", 125); return 0;} 125 12500125 > "%05d" 1 2 3 4 5 0 0 1 2 5
-
2020.08.29
vim 설정 변경하는 방법 (탭 공백 4칸으로 바꾸기)
vim의 설정을 변경하려면 홈 디렉토리(~)에 .vimrc 파일을 생성한 후, 이 파일에 설정하고 싶은 내용을 입력해주면 된다. ubuntu@ip-172-xx-xx-xx:~$ cd ~ubuntu@ip-172-xx-xx-xx:~$ vim .vimrc vim에서 탭(Tab) 버튼을 누르면 기본으로 8칸의 공백이 생기는데 이것을 4칸으로 바꾸려면 .vimrc 파일에 다음과 같은 내용을 입력해주면 된다. > .vimrc set smartindentset tabstop=4set expandtabset shiftwidth=4
-
2020.08.25
[리눅스] 쉘(Shell) 프로그램 구현 (execl(), execlp() 사용)
쉘(Shell) 프로그램 구현 (execl(), execlp() 사용) 리눅스에서 C 언어의 `execl()`, `execlp()` 함수를 사용하여 쉘 프로그램을 구현할 수 있다. ■ `execl()`, 함수를 사용하여 쉘 프로그램 구현하기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include #include #include #include #include #include #define MAXLINE 64 int main(int argc, char **argv) { char buf[MAXLINE]; pid_t pid; printf("TestShell ver 1.0\n..
-
2020.08.20
XShell 또는 PuTTY를 이용하여 AWS EC2 Ubuntu Server에 연결하기
*XShell 또는 PuTTY를 이용하여 AWS EC2 Ubuntu Server에 연결하기 AWS EC2 설정1. 인스턴트 생성 : Ubuntu Server (ex: Ubuntu Server 20.04 LTS (HVM), SSD Volume Type)2. 키 페어 생성 & .pem 파일 저장3. [네트워크 및 보안] 탭 → [탄력적 IP] → [탄력적 IP 주소 할당] → 할당 후 [탄력적 IP 주소 연결] → 인스턴스 : (생성한 인스턴스) 선택 후 [연결]4. [인스턴스] 탭 → 생성한 인스턴스의 , , 확인 XShell 설정- [파일] 탭 → [새로 만들기]- [연결] 탭- 이름 : (임의 설정) (ex: AWSEC2_Ubuntu)- 호스트 : AWS EC2의 IP 입력- [사용자 인증] 탭- 방법..
-
2020.08.14
C언어 2차원 배열 동적 할당 예제
// 동적 할당을 이용하여 ROW x COL 크기의 2차원 배열 만들기 #include #include #define ROW 10 #define COL 10 int main() { int count = 0; // 동적할당을 이용하여 2차원 배열 생성하기 int **arr = (int**)malloc(sizeof(int) * ROW); for (int i = 0; i < ROW; i++) { arr[i] = (int*)malloc(sizeof(int) * COL); } // 2차원 배열에 데이터 넣기 for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { arr[i][j] = count++; } } // 2차원 배열의 내용 출력하기 for (int..
-
2020.08.13
탐욕 알고리즘(Greedy Algorithm)
*탐욕 알고리즘 탐욕 알고리즘(Greedy Algorithm) - 결과값에 대하여 생각하지 않고 최선의 옵션을 선택하여 문제를 해결하는 알고리즘 - 즉, 지역적(locally)의 최선의 선택이 전역적(globally)의 최상의 결과값을 생성하도록 하는 것을 목표로 하는 알고리즘.- 미리 정한 기준에 따라서 매번 가장 좋아 보이는 답을 선택하는 알고리즘 - 탐욕 알고리즘은 해답에 포함될 원소들을 차례로 선택하는 과정을 거치게 됨 - 각 단계에서는 전체적인 상황을 종합적으로 판단하고, 고려하여 결정하는 것이 아니라 현 시점의 정보 를 바탕으로 가장 이익이 되는 원소들을 선택함. - 동적 계획법(Dynamic Programming)과 마찬가지로 최적화 문제(Optimization Problem) 를 푸는데 사..
-
2020.07.19
Visual Studio에서 scanf() 관련 오류 메시지 없애는 방법
*Visual Studio에서 scanf() 관련 오류 메시지 없애는 방법 Visual Studio IDE는 기본적으로 보안에 취약한 함수를 사용할 수 없도록 제한하고 있다. scanf() 함수는 보안에 취약한 함수로 분류 되었기 때문에, scanf()를 사용하여 컴파일을 할 경우 컴파일 오류로 인하여 컴파일을 수행할 수 없다. (Visual Studio는 scanf() 함수 대신 scanf_s() 함수 사용을 권장하고 있다.) _CRT_SECURE_NO_WARNINGS 를 적용하면 이러한 컴파일 오류를 없앨 수 있다. 간단히 #define _CRT_SECURE_NO_WARNINGS 를 코드에 추가하면 된다. (또는 #pragma warning(disable:4996)를 코드에 추가하면 된다. ) #de..
-
2020.06.19
[BOJ2693][C++] N번째 큰 수
문제배열 A가 주어졌을 때, N번째 큰 값을 출력하는 프로그램을 작성하시오.배열 A의 크기는 항상 10이고, 자연수만 가지고 있다. N은 항상 3이다. 입력첫째 줄에 테스트 케이스의 개수 T(1 North America > Greater New York Region > 2009 Greater New York Programming Contest A번· 문제를 번역한 사람: baekjoon· 잘못된 데이터를 찾은 사람: occidere 코드 12345678910111213141516171819202122232425262728#include #include #include using namespace std; #define CNT 10#define NTH 3 // N번째로 큰 수 int main() { int..
-
2020.06.18
qsort 함수 : 퀵 정렬 라이브러리 함수
*qosrt 함수 : 퀵 정렬 라이브러리 함수 - C에서 제공하는 퀵 정렬 표준 라이브러리 함수- 사용하려면 헤더 파일을 불러와야 한다. void qsort(void *base, int num, int width, int (*compare)(const void *, const void *));base : 배열의 시작 주소num : 배열 요소의 개수width : 배열 요소 하나의 크기(바이트 단위)compare비교 함수포인터를 통하여 두 개의 요소를 비교하여 비교 결과를 정수로 반환사용자가 제공해야 함.반환값 0 : elem1이 elem2보다 크면- 사용 예 #include #include // qsort() int comp..
-
2020.06.08
Union-Find 알고리즘(서로소 집합 알고리즘)
*Union-Find 알고리즘 - Disjoint-Set(서로소 집합) 알고리즘이라고 불린다. - 지금 추가하고자 하는 간선의 양끝 정점이 같은 집합에 속해 있는지를 검사하는 알고리즘.- 간선의 양끝 정점이 서로 다른 집합에 속하는 경우, 두 정점을 연결하여도 사이클이 형성되지 않는다.- Kruskal MST 알고리즘을 구현하는데 사용된다. #include #define MAX_VERTICES 100 int parent[MAX_VERTICES]; // 부모 노드int num[MAX_VERTICES]; // 각 집합의 크기 // 초기화void set_init(int n) { int i; for (i = 0; i < n; i++) { parent[i] = -1; num[i] = 1; }} // vertex가..
-
2020.06.05
[BOJ2947][C++] 나무 조각
문제동혁이는 나무 조각을 5개 가지고 있다. 나무 조각에는 1부터 5까지 숫자 중 하나가 쓰여져 있다. 또, 모든 숫자는 다섯 조각 중 하나에만 쓰여 있다.동혁이는 나무 조각을 다음과 같은 과정을 거쳐서 1, 2, 3, 4, 5 순서로 만들려고 한다. 1. 첫 번째 조각의 수가 두 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.2. 두 번째 조각의 수가 세 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.3. 세 번째 조각의 수가 네 번째 수보다 크다면, 둘의 위치를 서로 바꾼다.4. 네 번째 조각의 수가 다섯 번째 수보다 크다면, 둘의 위치를 서로 바꾼다. 만약 순서가 1, 2, 3, 4, 5 순서가 아니라면 1 단계로 다시 간다.처음 조각의 순서가 주어졌을 때, 위치를 바꿀 때 마다 조각의 순서를 출력..
-
2020.05.15
이진 탐색 트리 프로그램 (Binary Search Tree Program)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816..
-
2020.05.05
우분투 su: Authentication failure 오류 해결 방법
가상머신에 우분투(Ubuntu)를 설치한 후 root 권한을 얻기 위해 'su root' 명령어를 입력했는데 'su: Authentication failure' 오류가 났다.이 문제는 초기에 root 비밀번호가 설정되어 있지 않아서 발생하는 문제이다.따라서 'sudo passwd root' 명령어를 입력하여 root 비밀번호를 설정한 후에 root 권한을 얻으면 된다.
-
2020.04.11
네트워크관리사 검정개요
네트워크관리사언제나 먼저 생각하고 함께하는 ICQA가 되겠습니다.시험소개시험일정기타안내검정개요개요 및 검정기준네트워크관리사란 서버를 구축하고 보안 설정, 시스템 최적화 등 네트워크구축 및 이를 효과적으로 관리할 수 있는 인터넷 관련 기술력에 대한 자격이다.자격명칭검정기준네트워크관리사1급네트워크 관리에 관한 전문지식을 토대로 네트워크 보안기술, Design, Traffic 분산기술 등 네트워크 전문기술자로서 필요한 IT 기술 및 네트워크 실무. 관리 능력 검정2급 국가공인네트워크 관련 업무 수행을 위한 일반적인 운용지식과 구축기술 NOS운영, Packet분석, Monitoring, 인터넷기술, Protocol 등 기초 이론과 실무능력 검정네트워크관리사 1급자격의 종류 : 등록(비공인)민간자격등록번호 : 2..
-
2020.03.27
리눅스 gcc 명령어
리눅스 c 컴파일전처리 컴파일 링크 빌드 설명전처리 단계 -> 컴파일 단계 -> 어셈블 단계 -> 링크 단계(.c) (.i) (.s) (.o) (a.out).c 파일이 전처리 단계를 거쳐서. i 파일 (전처리된 c 파일) 이 생성되고.i 파일이 컴파일 단계를 거쳐서. s 파일 (어셈블리어 파일) 이 생성되고.s 파일이 어셈블 단계를 거쳐서. o 파일 (오브젝트 파일) 이 생성되고.o 파일이 링크 단계를 거쳐서 a.out 파일 (실행파일) 이 생성되는 것이다. 전처리위의 소스코드에서 #include로 시작하는 것을 전처리 기라고 부릅니다.전처리 과정에서는 소스코드를 처리하기 쉽게 재구성하는 과정입니다.위의 #include 부분은 stdio.h 파일을 포함시키겠다는 의미인데 전처리 과정에서 저 파일에..
-
2020.03.27
[chcp] 콘솔 코드 페이지 변경 명령어
[chcp] 콘솔 코드 페이지 변경 명령어 비주얼 스튜디오 코드에서 gcc 컴파일러를 사용하기 위해서 MinGW 프로그램을 설치한 후, C언어로 작성한 코드를 컴파일하여 생성된 프로그램(exe 파일)을 실행하였는데 한글 폰트가 깨져 나왔다. 그래서 이것을 해결하기 위한 방법을 찾던 중, 'chcp' 명령어에 대해서 알게 되었다. *CHCP - 현재의 코드 페이지 번호를 표시하거나 설정한다. - 형식 : CHCP [nnn] - nnn : 코드 페이지 지정 - 매개 변수 없이 사용하면 현재의 코드 페이지 번호를 표시한다. - 자주 사용되는 코드 번호 - 437 : 영문 - 949 : 한글, 확장 완성형 - 65001 : UTF-8 - 자세한 정보 - https://docs.microsoft.com/en-us..
-
2020.03.24
[Python] matplotlib 라이브러리를 이용하여 그래프 그리기
*matplotlib 라이브러리를 이용한 그래프 그리기 # default 설정 import numpy as np import matplotlib.pyplot as plt %matplotlib inline np.random.seed(1) x = np.arange(10) # 0~9 사이 랜덤 수 y = np.random.randn(10) # 0~1 사이 랜덤 수 print(x) print(y) [0 1 2 3 4 5 6 7 8 9] [ 1.62434536 -0.61175641 -0.52817175 -1.07296862 0.86540763 -2.3015387 1.74481176 -0.7612069 0.3190391 -0.24937038] # 그래프 표시 plt.plot(x, y) # 꺾은선 그래프를 등록 pl..
-
2020.03.24
람다 함수(Lambda Function)
*람다 함수(Lambda Function) # Lambda 함수 add = lambda a, b: a + bresult = add(3, 4)print(result) # 7 avg = lambda a: sum(a) / len(a)result = avg([1, 2, 3])print(result) # 2 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 하며, 함수를 한 줄로 간결하게 만들 때 사용한다. lambda 매개변수1, 매개변수2, ... : 매개변수를 이용한 표현식
-
2020.03.24
리스트 내포(List Comprehension)
*리스트 내포(List Comprehension) # 리스트 내포(List Comprehension)a = [1, 2, 3, 4]result = []for num in a: result.append(num * 3)print(result) # [3, 6, 9, 12] a = [1, 2, 3, 4]result = [num * 3 for num in a] # 리스트 내포(List Comprehension)print(result) # [3, 6, 9, 12] # 리스트 안에 for, if문 포함하기a = [1, 2, 3, 4]result = [num * 3 for num in a if num % 2 == 0]print(result) # [6, 12] 리스트 안에 for문이나 if문을 포함하여 간단하게 리스트를 ..
-
2020.03.13
006. 데이터베이스 사용자
데이터베이스 사용자 1. DBA(DataBase Administrator)- 데이터베이스 시스템의 모든 관리와 운영에 대한 책임을 지고 있는 사람이나 그룹으로 다음과 같은 역할을 한다.데이터베이스 설계와 조작에 대한 책임 데이터베이스 구성 요소 결정개념 스키마 및 내부 스키마 정의데이터베이스의 저장 구조 및 접근 방법 정의보안 및 데이터베이스의 접근 권한 부여 정책 수립장애에 대비한 예비(Back Up) 조치와 회복(Recovery)에 대한 전략 수립무결성을 위한 제약 조건의 지정데이터 사전의 구성과 유지 관리사용자의 변화 요구와 성능 향상을 위한 데이터베이스의 재구성 행정 책임 사용자의 요구와 불평의 청취 및 해결데이터 표현 방법의 표준화문서화에 대한 기준 설정데이터베이스 사용에 관한 교육 시스템 감시..
-
2020.03.13
005. 데이터베이스 언어
데이터베이스 언어 - 데이터베이스 언어(Database Language)는 데이터베이스를 구축하고 이용하기 위한 데이터베이스 시스템과의 통신 수단이다.- 데이터베이스 언어는 DBMS를 통해 사용하며, 기능과 사용 목적에 따라 데이터 정의 언어, 데이터 조작 언어, 데이터 제어 언어로 구분된다. 1. 데이터 정의 언어(DDL; Data Definition Language)- 데이터 정의 언어(DDL) : DB구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어- 데이터 정의 언어는 번역한 결과가 데이터 사전(Data Dictionary)이라는 특별한 파일에 여러 개의 테이블로서 저장된다. (1) 데이터 정의 언어의 기능- 외부 스키마 명세 정의- 데이터베이스의 논리적, 물리적..
-
2020.03.13
004. 스키마(Schema)
스키마(Schema) 1. 스키마의 정의- 스키마(Schema) : 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세(Specification)를 기술(Description)한 메타데이터(Meta-Data)의 집합- 스키마는 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다.- 스키마는 사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 나누어진다. * 데이터베이스의 구성 요소- 개체(Entity) : 파일 처리 방식의 파일에서 레코드- 속성(Attribute) : 파일 처리 방식의 파일에서 필드(항목)에 해당되는 것으로 개체의 성질을 나타냄- 관계(..
-
2020.03.13
003. DBMS의 기능
DBMS의 기능 1. DBMS(DataBase Management System)의 정의- DBMS : 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고, 데이터베이스를 관리해주는 소프트웨어- DBMS는 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템- DBMS는 모든 응용 프로그램들이 데이터베이스를 공용할 수 있도록 관리해 준다.- DBMS는 데이터베이스의 구성, 접근 방법, 유지관리에 대한 모든 책임을 진다. * MS-Office 프로그램에 포함되어 있는 액세스 프로그램도 DBMS의 한 종류이다.* 응용 프로그램- 조직이나 기업체에서 특정 부서에 정보를 제공하기 위해 데이터베이스에 접근하여 운영되는 하나의 프로그램.- 데이터베이스는 여러개의..
-
2020.03.13
002. 데이터베이스의 개념
데이터베이스의 개념 1. 데이터베이스의 정의- 데이터베이스 : 특정 조직의 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임으로 다음과 같이 정의할 수 있다.- 통합된 데이터(Integrated Data) : 자료의 중복을 배제한 데이터의 모임- 저장된 데이터(Stored Data) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료- 운영 데이터(Operational Data) : 조직의 고유한 업무를 수행하는 데 존재 가치가 확실하고 없어서는 안될 반드시 필요한 자료- 공용 데이터(Shared Data) : 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료 * 운영 데이터- 단순한 입출력 자료나 작업 처리상 일시적으로 필요한 임시 자료는 운영 자료로 취급되지 않는다. 2. 데이터베이스의 특..
-
2020.03.13
001. 정보 시스템
정보 시스템 1. 자료와 정보- 자료(Data) : 현실 세계에서 관찰이나 측정을 통해 수집한 단순한 사실이나 결과값으로, 가공되지 않은 상태- 정보(Information) : 의사 결정에 도움을 줄 수 있는 유용한 형태로, 자료를 가공(처리)해서 얻을 수 있는 결과 2. 정보 시스템의 정의- 정보 시스템 : 조직체에 필요한 Data를 수집, 저장해 두었다가 필요 시에 처리해서 의사결정에 유용한 정보를 생성하고 분배하는 수단- 정보 시스템은 사용하는 목적에 따라 경영 정보 시스템, 군사 정보 시스템, 인사 행정 정보 시스템, 의사 결정 지원 시스템 등으로 구분되어 사용된다. 자료 처리 시스템 자료 → 가공(처리) → 정보 3. 자료 처리 시스템정보 시스템이 사용할 자료를 처리하는 정보 시스템의 서브 시스..
-
2020.03.12
비트 연산자(Bitwise Operator)
*비트 연산자(Bitwise Operator) 연산자 예 설명 &10 & 5 AND 연산 : 모두 참(1)일 경우만 참(1) | 10 | 5 OR 연산 : 둘 중 하나만 참(1)일 경우 참(1) ^ 10 ^ 5 XOR 연산 : 모두 다를 경우만 참(1) > 2 오른쪽 비트 이동 연산 # 비트 연산자 ''' & : AND 비트 연산 | : OR 비트 연산 ^ : XOR 비트 연산 : 왼쪽 피연산자의 비트를 오른쪽으로 이동''' print(10&5) # 0print(10|5) # 15print(10^5) # 15print(102) # 2 ''' 풀이 bin(10) : 0b1010 bin(5) : 0b101 (1) &(AND) 10: 1010 5 : 0101 --------- 0000(2) -> 0(10) (..
-
2019.09.21
[BOJ2753][C++] 윤년
문제연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때 이다.예를들어, 2012년은 4의 배수라서 윤년이지만, 1900년은 4의 배수이지만, 100의 배수이기 때문에 윤년이 아니다.하지만, 2000년은 400의 배수이기 때문에 윤년이다. 입력첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다. 출력첫째 줄에 윤년이면 1, 아니면 0을 출력한다. 예제 입력 1 2000 예제 출력 1 1 코드 123456789101112131415161718192021222324#include using namespace std; int main() { int year; in..
-
2019.05.06
Dynamic Memory (동적 메모리)
Static & Dynamic Memory To be successful as a C++ programmer, it's essential to have a good understanding of how dynamic memory works. In a C++ program, memory is divided into two parts: The stack: All of your local variables take up memory from the stack. The heap: Unused program memory that can be used when the program runs to dynamically allocate the memory. Many times, you are not aware in a..
-
2019.05.06
Pointers (포인터)
Pointers Every variable is a memory location, which has its address defined. That address can be accessed using the ampersand (&) operator (also called the address-of operator), which denotes an address in memory. For example:int score = 5; cout