출처: https://3months.tistory.com/307 [Deep Play]

전체 글 230

[BOJ] 1316 그룹 단어 체커

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 문자가 들어 온 적이 있는데 전에 문자와 같지 않다면 카운트를 하지 않는 식으로 구현하였다. #include #include #include using namespace std; bool check[26]; int main(){ cin.tie(0); cout.tie(0); ios::sync_with_stdio(0); int N; cin>>N; int cnt=0; w..

백준/String 2021.09.06

컴파일러 구조 개요

컴파일러 구조 컴파일러는 위와 같은 순서로 돌아간다. 1. Scanning = Lexical Analysis(어휘 분석) - 주어진 문장이 어떤 단어를 포함하고 있는지 확인한다. 가장 작은 의미있는 단어를 'token'이라고 하는데 이를 구분한다. 2. Parsing = Syntax Analysis(구문 분석) - 추출된 token들이 문장의 구성 요소 가운데 어디에 해당하는지 확인한다. 확인하면서 Parse tree 또는 Syntax tree(구문 트리)를 생성한다. 3. Semantic Analysis(의미 분석) - 의미 분석을 수행하는 단계지만 형식 언어는 의미를 가지고 있지 않기 때문에 주로 type을 검사한다. 검사한 내용을 tree에 추가해준다. 4. Intermediate Code Gene..

Introductory Concept

배커스-나우르 표기법(Backus–Naur form), 약칭 BNF는 문맥 자유 문법을 나타내기 위해 만들어진 표기법이다. 여기에서 기호는 말단 기호가 될 수 없고, 표현식은 다른 기호의 조합, 또는 여러 가지의 표현식 중 하나를 사용한다는 의미로 |를 사용한다. 다른 표현식으로 정의되지 않은 기호는 자동적으로 말단 기호가 된다. 또한, 기호가 아닌 상수에는 따옴표를 붙여서 구별한다. Assembly 언어는 Label, OP, Operand 이렇게 3가지로 구성되어 있다. ① Label : 데이터를 기억할 기억장소, 또는 분기할 위치, 기호 상수 등에 대한 기호(Symbol)를 기술하는 부분으로 생략할 수 있다. ② OP : 명령어(OP-code)를 기술하는 부분 ③ Operand : OP-code가 연..

Process

CPU virtualizing 운영체제가 여러가지 가상 CPU들이 존재하는 것 처럼 보이게 하는 것을 말한다. Process 구성요소 Memory( address space ) - Instructions - Data section Registers - Program counter - Stack pointer Process API Create - 새로운 process를 만든다. Destroy - process를 중단한다. Wait - 돌아가는 것을 멈추기 위해 다른 process를 기다림 Miscellaneous Control - process를 중단했다가 재개하는 기능 Status - process 상태를 가져옴. Loading:From Program To Process Process State Tran..

3-2/운영체제 2021.09.03

Chap02

Protocol Layering Protocol이란 컴퓨터끼리 네트워크를 통해 데이터를 주고받을 때 편의성을 위해 서로 지켜야 할 통신규약이다. 대화와 같이 간단한 소통은 같은 언어 사용이라는 한가지 규약만 지키면 되지만 메일을 주고받는다고 하면 여러 가지 Protocol이 필요한데 이를 Protocol Layering이라고 한다. Protocol Layering의 첫번째 규칙은 한쪽이 하는 것의 반대를 반대쪽이 할 수 있어야 한다. 예를 들어 한쪽이 압축을 하면 다른 쪽은 압축을 풀 수 있어야 한다.(이걸 계층별 활동의 역전 성??이라고 한다) 두 번째 규칙은 각각의 측이 모두 동일한 object여야 한다. Logical Connections 실제로 한 데이터가 internet을 통해 전송될 때 Phy..

Chap01

Five components of data communication 1. Sender - 보내는 이 2. Receiver - 받는 이 3. Transmission medium - 데이터가 이동할 경로 (wired or wireless) 4. Message - 보낼 데이터 5. Protocol - 보낼 때 지켜야 하는 원칙 Type of Data Flow 1. Simplex - 기기들이 Sender와 Receiver가 고정이 되어있다. 한번 고정되면 바뀔 수 없다. 2. Half-duplex - 한 기기가 Sender, Receiver 둘 다 가능하다. 하지만 동시에는 불가능하다. 3. Full-duplex - 한기기가 Sender인 동시에 Recevier가 될 수 있다. Network Criteria (..

[BOJ] 벽 부수고 이동하기 4

https://www.acmicpc.net/problem/16946 16946번: 벽 부수고 이동하기 4 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이 www.acmicpc.net 이 문제를 풀면서 bfs에 대해서 한번 더 배우게 된 것 같다. 알고리즘 1. 전체 반복문을 돌면서 영역에 포함되지 않은 0을 만난다면 bfs를 돌리며 color값을 입력한다. 2. bfs를 돌면서 방문한 0의 좌표를 저장하고 bfs가 끝났으면 해당 영역의 크기를 저장한 좌표에 저장해준다. 3. 다시 전체 반복문을 돌면서 1을 만날 경우 그 칸과 모두 인접한 0에 저장된 영역..

백준/DFS,BFS 2021.08.30

[BOJ] 14442 벽 부수고 이동하기 2

https://www.acmicpc.net/problem/14442 14442번: 벽 부수고 이동하기 2 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net 처음에는 뚫고 지나온 벽의 개수를 bfs를 돌면서 저장했다가 개수가 K가 될 경우 벽을 만나면 지나치지 못하게 식을 세웠다. 이렇게 세우니 벽을 나중에 뚫는 경우가 더 최소인 경우가 존재하여 틀렸습니다가 떴다. 그래서 bfs를 돌 때, 방문을 했어도 이번에 방문하는 거리가 최소라면 push가 되게 했는데 이래도 오류가 났다... 솔직히 어떤 반례가 존재하는지 잘..

백준/DFS,BFS 2021.08.30

[BOJ] 22232 가희와 파일 탐색기

https://www.acmicpc.net/problem/22232 22232번: 가희와 파일 탐색기 첫 번째 줄에 jo_test 폴더에 있는 파일 개수 N과 가희가 설치한 OS에서 인식하는 파일 확장자의 개수 M이 공백으로 구분되어 주어집니다. 2번째 줄부터 N+1번째 줄까지 FILENAME.EXTENSION 형식의 문자열 www.acmicpc.net 쉬워 보이지만 시간이 많이 걸렸던 문제이다. sort에 cmp함수에는 아무리 작은 계산이라도 넣으면 시간 초과가 난다는 것을 잊지 말자. #include #include #include #include #include using namespace std; vector all; map ex; bool cmp(pair a,pair b){ if(a.first...

백준/String 2021.08.30