클라우드란? 다른 회사의 공급자가 호스팅하고 인터넷을 통해 사용자에게 제공되는 인프라, 플랫폼, 또는 소프트웨어 별도의 설치 없이 프로그램을 이용할 수 있다. 이를 오프프레미스 방식이라고도 한다. 온프레미스 자체적으로 데이터를 유지 관리하는 방식이다. 기존 배포방식 물리적인 컴퓨터 한대에 하나의 OS를 설치함. 사용자 계정을 여러 개 사용할 수 있지만 프로그램을 서로 공유함 가상화 배포방식 컴퓨터의 하드웨어를 소프트웨어로 구현한 가상머신을 사용해 한 대의 컴퓨터로 여러 개의 OS를 구동할 수 있다. 이러한 가상화 배포방식을 이용해 하나의 컴퓨터에서 여러 사용자에게 독립적인 클라우드 서비스를 제공할 수 있다. IaaS, PaaS, SaaS Infrastructure as a service : 인프라형 클라..
API란? Application Programming Interface 둘 이상의 컴퓨터 프로그램이 통신하는 방법이자 중계 계층을 의미함 ex) 프로토콜, 메서드, 데이터타입등이 정의됨 Interface란? 두 장치나 시스템 간에 내부 구성요소를 몰라도 정보나 신호를 주고받을 수 있게 해주는 것 ex) 스마트폰의 내부 시스템을 모르지만 UI를 사용해 원하는 어플을 실행할 수 있음 API의 장점 1. 서비스의 중요한 부분을 숨기고 드러내고 샆은 부분만 드러낼 수 있음 2. 사용자는 서비스의 구현 방식을 알 필요가 없음 3. Open api는 개발 시간과 비용을 절약함( ex : 서비스를 개발할 때 네이버 로그인 api를 사용하면 따로 로그인 시스템을 구현할 필요가 없음) 4. 내부 프로세스가 수정되었을 때..
XML이란? Extensible Markup Language XML은 마크업 형태를 쓰는 데이터 교환형식이다. 마크업 형태란 태그 등을 이용해 데이터나 문서의 구조를 나타내는 방법이다. XML의 구성요소 프롤로그( ), 루트 요소, 하위 요소 HTML과의 차이 1. XML은 데이터를 저장 및 전송하기 위한 것이고, HTML은 데이터를 보여주기 위한 것이다. 2. HTML은 미리 정해진 태그만을 사용해야 하며, XML은 커스텀 태그를 생성할 수 있다. 3. HTML은 대소문자 구별이 없고, XML은 대소문자를 구별한다. JSON과의 차이 1. 닫힌 태그( )가 들어가기 때문에 JSON보다 무겁다. 2. Javascript로 변환하기 위해 들어가는 노력이 JSON보다 많다.(외부 라이브러리를 사용하거나 직접..
JSON이란? Jsvascript Object Notation 자바스크립트 객체 문법으로 구조화된 데이터 교환 형식, 여러 언어에서 데이터 교환 형식으로 쓰이며 객체 문법 말고 단순 배열이나 문자열로도 표현이 가능하다. 자바스크립트 객체 문법의 기본 형태 { key : value } ex) { "name" : "dlrudfh", "age" : 26 } 데이터 추출 배열과 동일하게 사용이 가능하다. ex) const a = { "name" : "dlrudfh", "favorite" : [ { "name" : "banana" }, { "name" : "apple" } ] } console.log(a.name) -> dlrudfh console.log(a.favorite[0].name) -> banana co..
문제 : https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 비트값을 압축하는 문제이다. x, y축 길이가 항상 같고, 주변 4칸을 기준으로 압축하기 때문에 범위를 절반씩 줄여 가며 압축한다. #include using namespace std; int n; string m[64]; string zip(int a, int b, int scale){ char c = m[a][b]; if(scale == 1) return string(1,..

static void Main(string[] args) { int? a = null; int i = a??10; Console.WriteLine(i); } class Program { static string printNum() { return null; } static void Main(string[] args) { Console.WriteLine(printNum()); } } 참조 타입의 경우 위와 같이 null을 명시적으로 사용할 수 있다. 하지만 값 타입은 null을 허용하지 않기 때문에 문제가 발생한다. nullable이란 null+able이라는 뜻 그대로 null이 가능하도록 해주는 것이다. 문법의 경우 매우 간단하게도 타입 뒤에 "?"만 붙이면 nullable이 된다. static voi..
이전 글에서 Delegate라는 문법을 설명했다. 간단히 복습하자면 delegate는 함수 변수처럼 선언하거나 인자로 사용할 수 있는 타입이다. Delegate역시 클래스처럼 일반화가 가능하다. class Program { delegate Return print(); delegate Return print(T t); delegate Return print(T1 t1, T2 t2); static int callFunction(print function, int i) { return function(i); } static int printNum(int i) { return i*10; } static void Main(string[] args) { print p = printNum; int i = callFu..

1. Delegate delegate(대리자)는 함수 자체를 인자로 받을 수 있는 기능을 말한다. 어떤 함수에서 특정 부분을 상황에 따라 다르게 수행하고 싶을 때, delegate를 사용해 여러 함수 중 상황에 맞는 함수를 호출할 수 있다. class Program { delegate void print(); static void callFunction(print function) { function(); } static void printLine() { Console.WriteLine("Hello"); } static void Main(string[] args) { callFunction(printLine); } } delegate로 대리자를 하나 생성한다. callFunction 함수에서 해당 대리자..
문제 : https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 해당 문제는 비의 높이에 따라 달라지는 connected component 중 갯수가 최대가 되는 경우를 구하는 문제이다. 강의에서는 arr를 따로 하나 더 구현하지는 않았지만, 본인은 safeArr이라는 배열을 하나 더 만들어서 문제를 해결했다. 배열을 하나 더 만들면 메모리 측면에서 손해가 있지만, 문제의 범위가 최대 100*100이기 때문에 큰 문제는 없을 듯 하다. #include int..