분류 전체보기 10

Adapter 패턴 & Proxy 패턴

Adapter 패턴비슷한 기능/구성이지만 명칭(인터페이스)이 다를 때, 그 중간에 어댑터를 두어 통역가 역할을 한다. 예를 들어, 단순 출력 기능의 print 함수가 있고, 역할은 같지만 다른 버전의 oldprint 함수가 있다.print만 써도 oldprint/print 상관없이 동작시키고 싶다면?# 문제 상황일반적으로 클래스/인터페이스를 구현한다면, print 함수에 대해 하위 클래스에서 재정의하고 같은 이름으로 호출할 수 있지만, oldprint는 그럴 수 없다.# 해결print 함수를 사용해도, 그 내부에서 oldprint를 호출하는 Adapter를 선언함으로써, 사용자는 print만 써도 print / oldprint 상관없이 사용할 수 있게 된다.# 문제 상황Adapter를 사용하지 않고 ol..

백준 1531. 투명

[문제]유형: 구현/시뮬레이션언어: C++난이도: 실5사이트: https://www.acmicpc.net/problem/1531 [리뷰]쟁점: 2차원 배열에 겹친 수를 누적하기종이 관련 문제는 2차원 배열에 값을 저장하여 이용하는 문제가 많다.종이를 추가할 때마다, 종이에 대한 배열 위치에 값을 누적한다.그 누적 값이 M을 넘기는 위치 개수를 센다. 학습 내용.none 해답.입력받을 때 img[x][y] 값 1 증가.모두 입력 받은 후, img[x][y] > M인 개수 출력. [코드]// p8320. 직사각형을 만드는 방법// C++로 다시 풀기#pragma warning(disable:4996)#includeusing namespace std;int img[101][101];int main(void){..

백준 8320. 직사각형을 만드는 방법

[문제]유형: 수학/구현언어: C++난이도: 브2사이트: https://www.acmicpc.net/problem/8320[리뷰]쟁점: 넓이가 n을 넘지 않으면 된다. 시간 제한 1초인데 N은 10,000까지이므로 시간복잡도에 따라 최대 이중 반복문까지 가능하다.틀렸던 문제.두 변의 길이를 곱해서 n을 넘지 않으면 된다.즉, 두 숫자의 조합을 구하면 되는 문제이며, 당연히 숫자의 범위는 n까지 가능하다(직사각형 1 * n 크기).이동/회전은 의미가 없으므로, 순열이 아닌 조합으로 생각하면 이해하기 수월하다. nC2 학습 내용.none 오답 노트.처음엔 약수를 구하면 된다고 생각했다. 단순히 약수 개수를 구하니, 중복을 제거하기가 까다로웠다. 게다가, 시간 초과.그저 단순히 두 개의 숫자를 곱했을 때, n..

백준 2851. 슈퍼마리오

[문제]유형: 구현/브루트포스/누적합언어: C++난이도: 브1사이트: https://www.acmicpc.net/problem/2851[리뷰]쟁점: none난이도 상당히 쉽다.버섯을 먹으면서 100점 이상이 되면 멈추도록 한다.100점을 넘기 직전 점수와, 넘긴 직후 점수 중 100점에 가까운 것을 찾으면 된다. 학습 내용.케이스가 하나뿐이라면, 입력을 다 받지 않아도 가능하다.처음엔 배열에 입력을 모두 받고 연산했는데, 이후에 입력을 받으면서 합이 100을 넘기면 바로 끝나도 정답 처리됐다. 해답.(현재 누적합 - 100) > (100 - 직전 누적합) 이면 '직전 누적합' 출력그 외엔 '현재 누적합' 출력 → 차이가 같은 경우도 포함된다. [코드]// p2851. 슈퍼 마리오#pragma warnin..

백준 14470. 전자레인지

[문제]유형: 수학/구현/사칙연산/시뮬레이션언어: C++난이도: 브4사이트: https://www.acmicpc.net/problem/14470[리뷰]쟁점: 녹는점 해동시간문제 설명이 길어서 그렇지, 이해만 한다면 어렵지 않은 문제였다.온도에 따라 가열 시간이 바뀌는 조건만 알면 쉽다. 1. 영하 → 0도: C초/ ℃2. 0도 → 0도: D초/ ℃3. 0도 → 영상: E초/ ℃ 2번 조건인 해동시간이 이 문제의 쟁점이다. 녹는점이라고 생각하면 쉽다. 학습 내용.C++에선 오버로딩이란 개념이 존재한다.오버로딩이란, 입력이나 출력 인자가 다르면 내부적인 동작이 다르더라도 함수명을 동일하게 만들 수 있다.따라서 정수형과 실수형 함수 abs가 각각 존재한다.C++에서 int 타입의 절댓값 함수 abs( )를 사..

커널 & 쉘

1. 커널운영체제는 커널과 시스템 프로그램으로 나눌 수 있다. 여기서 시스템 프로그램은 시스템 콜을 사용하는 응용 프로그램이 된다.자원 관리 등 흔히 생각하는 OS의 역할은 커널 부분이다. 즉, 운영체제의 핵심.운영체제는 사용자나 응용 프로그램이 하드웨어에 직접 접근하는 것을 방지하기 위해 Kernel Mode와 User Mode로 나뉜다.두 모드는 System Call을 통해서 전환된다.운영체제는 외부(사용자나 응용 프로그램)에서 '시스템 콜' 을 통해 커널에 접근하도록 하며, 커널에서 '드라이버' 를 통해 하드웨어를 제어하는 구조로 되어있다.2. 쉘커널은 사용자가 직접 접근하지 못하며, 쉘을 통해서 명령을 전달한다.위에 커널을 설명할 때, 사용자는 시스템 콜을 통해서 접근한다고 서술했다. 그럼 쉘이 ..

Mutual Exclusion Q&A

Q1. Mutex와 Binary Semaphore의 차이?뮤텍스는 소유권(Ownership)이 있다. 세마포어는 없다.자원을 받은 Task가 사용한 후, Task가 주체적으로 반환한다.기법은 거의 동일하다. Q2. Counting Semaphore는 어느 상황에서 쓰는 걸까? count 값 만큼 동시 접근하면 문제가 생기지 않을까? 어떤 점에서 상호 배제성이 있는 걸까?동일한 자원이 여러 개면 세마포어를 사용할 수 있다. Timer가 5개일 때, 굳이 Binary sem으로 하나의 Task만 자원을 사용하게 한다면, 나머지 4개는 남게 된다. 그리고, count 값을 5로 설정함으로써 접근 수에 제한을 주기 때문에, Mutex 성질은 가진다. 그동안 Counting Semaphore가 count 값만큼 ..

정수 승격 (다른 타입과의 비교 연산)

char와 short, int 형의 연산이 헷갈려 정리하고자 작성했다.정수 승격 (Integer Promotion)정수 승격이 왜 필요할까?CPU의 모든 명령어 처리는 ALU가 담당한다.** 참고: CPU 구성 요소 ** https://baeslee.tistory.com/1 CPU vs. MPU vs. MCUCPU, MPU, MCU, microprocessor, microcontroller, MICOM, SoC, processorCPUCentral Processor UnitALUregister (bank)control logic/unit위 3가지 요소를 갖추면 CPU 라고 칭할 수 있다.- 구성 보드가 여러 개여도 3가지 요소가 있으면 Cbaeslee.tistory.comCPU 동작에 관련한 글은 추후 ..

펌웨어와 임베디드 SW (feat. H/W, S/W, F/W)

" 시작하기에 앞서, 소프트웨어와 하드웨어를 알아보자 "하드웨어컴퓨터 등의 시스템을 구성하는 요소.특정 목적을 위한 물리적 구성품, 장비들을 통칭.즉, 물리적 구성 요소를 뜻한다.소프트웨어컴퓨터나 다른 디지털 장치가 특정 작업을 수행하도록 지시하는 명령어의 집합(프로그램).컴퓨터 시스템, 프로그램, 데이터에 의해 처리되는 모든 정보.하드웨어 상에서 구동되는 비가시적인 요소를 모두 일컫으며, 무형적인 개념이다. 크게 두 종류로 구분된다.시스템 SW : 하드웨어를 제어하고 관리, 응용 SW 실행 환경을 제공. (ex. OS)응용 SW : 사용자가 직접 사용하는 SW (우리가 흔히 사용하는 일반적인 프로그램) " 펌웨어와 임베디드 SW, 두 용어를 기술하기 전에... 임베디드란 무엇인가? "임베디드Embedd..

CPU vs. MPU vs. MCU

CPU, MPU, MCU, microprocessor, microcontroller, MICOM, SoC, processorCPUCentral Processor UnitALUregister (bank)control logic/unit위 3가지 요소를 갖추면 CPU 라고 칭할 수 있다.- 구성 보드가 여러 개여도 3가지 요소가 있으면 CPU 이다.- 상당히 광범위한 범주MPUMicro Processor Unit(microprocessor)micro : 1 chip 집적 (하나의 칩에 다 올린다는 의미)MPU : CPU + 성능 ( cache / MMU / FPU / GPU / NEON / …) MPU 만으로는 LED 조차 켤 수 없다.BUS I/F를 통해 외부와 연결MCUMicro Controller Un..