Instruction Set 컴퓨터의 명령어 집합 (The repaertoire of instructions of a computer) ISA : Instruction Set Architecture 하드웨어와 로우레벨 소프트웨어(OS) 사이의 추상화 인터페이스. 모든 정보들은 명령어들을 명령어들을 통해 프로세스에게로 전달 됨. 어떤 레지스터를 사용할지, 어떤 명령어를 사용할지, 어떤 메모리를 사용할지, I/O등등이 모두 명령어를 통해 전달이 됨. ABI: Application Binary Interface 프로그래머가 사용하는 사용자 영역의 명령어 집합 (The user portion of the instruction set)과 OS 인터페이스를 합친 것. 다시말하면 어떤 프로그램이 어떤 컴퓨터에서 실행..
https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 전형적인 구현 문제. 처음에는 head, tail 좌표값을 가지고서 2차원 배열에 표시하려고 했으나, 꼬리 부분을 지울때, 다름 꼬리를 지정하는 부분이 구현하기 까다로워서 디큐를 이용해 구현했다. 이동할 장소에 사과가 없다면 디큐의 맨 앞부분을 제거하고, 그 좌표값을 지도에 반영한다. 그 외에는 모두 이동할 장소의 좌표값을 넣어주는 식으로 구현했다. import Foundation let n = Int(..
https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 전형적인 구현 문제. removeFirst()같은 배열 관련 내장 함수를 사용하면 시간초과가 뜨기에 다른 방식으로 구현해야 했고 명령어의 수 + 수열의 길이의 합이 70만이 최댓값 이였길래 여러 최적화가 필요했다. 기본적으로는 투포인터 알고리즘을 사용했다. 풀이 함수 P의 길이라 10만 이하이므로 만약 함수를 일일히 다 실행하면 시간초과가 뜸. 따라서 연속되는 명령어들을 묶는 방식으로 처리. RRDDDDRD라는 함수가 입력되었을 때, 이를 RR, DDD..
Application Software 하이레벨 언어로 쓰여진 프로그램. 일반적인 사람들이 쓰는 프로그램. System software OS, 컴파일러 등등 컴퓨터를 실행하는데 기본적인 소프트웨어. 하드웨어 프로세서, 메모리, I/O 컨트롤러 컴파일 과정: High-Level 언어 → (컴파일러)→ 어셈블리 언어 → (어셈블러) → 기계어 프로세서(CPU) 구성요소 DataPath Control Cache memory Abstraction 복잡한 문제를 처리하는데 도움을 줌. low-level의 디테일을 숨김 Instruction set Architecture (ISA): 하드웨어/소프트웨어 인터페이스. 명령어들의 집합 Application binary interfac: ISA + 시스템 소프트웨어 인터페..
완전탐색, 부르트포스, 구현등의 유형에서 많이 나오는 알고리즘. 중요하니까 정리해보자. 조합 중복을 허용하지 않음. 123이나 231이나 321은 다 똑같음. 조합은 dfs로 구현하거나 이진법 또는 점화식을 이용하여 구현할 수 있음. dfs로 n개의 숫자에 대해 r개로 이루어진 조합을 구하는 코드는 let n = [1,2,3,4,5] let r = 3 var comb: [Int] = Array(repeating:0 ,count:r) func dfs(depth: Int, beginWith: Int) { if depth == r { print(comb) return } for i in beginWith..
https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 전형적인 경로 탐색 문제. 접근 방식은 for문으로 비의 높이가 지역의 높이보다 낮다면 해당 지역을 시작점으로 계속해서 탐색하고, 만약 더 탐색할 수 없다면 다음 시작점으로 이동해서 이어진 경로를 계속해서 탐색한다. 이때 BFS를 이용해서 문제를 풀었다. visited를 통해 비의 높이에 따라 방문 했는지 체크해서 푸는 방식을 택했다. 다른 사람 풀이를 보니 DFS를 이용해 푼 사람도 있던데 문제의 요점..