본문 바로가기
반응형

분류 전체보기881

[PintOS] 핀토스 뽀개기 4 - FILE SYSTEM 보호되어 있는 글 입니다. 2023. 9. 23.
[PintOS] 핀토스 뽀개기 3 - VIRTUAL MEMORY 보호되어 있는 글 입니다. 2023. 9. 23.
[PintOS] 핀토스 뽀개기 2 - USER PROGRAMS 보호되어 있는 글 입니다. 2023. 9. 23.
[PintOS] 핀토스 뽀개기 0 - Introduction 보호되어 있는 글 입니다. 2023. 9. 22.
빅 엔디안(Big Endian) 리틀 엔디안(Little Endian) - 정의, 비교 빅 엔디안과 리틀 엔디안은 컴퓨터 아키텍처에서 데이터를 메모리에 저장하고 표현하는 주요 방식입니다. 엔디안 방식은 바이트 순서를 나타내며, 바이트 순서는 다중 바이트 데이터 타입을 메모리에 저장하는 방식을 설명합니다. 하드웨어와 프로세서의 설계 결정에 따라 정해지며, 서로 다른 방식의 시스템들은 데이터 교환 시 주의가 필요합니다. 네트워크 통신 및 파일 형식에서 엔디안 방식이 중요한 역할을 합니다. 데이터를 전송, 저장 시 올바른 방식으로 해석되기 위해서 엔디안 변환 작업이 필요한 경우도 있습니다. 빅 엔디안(Big Endian) 여러 개의 프로토콜과 파일 포맷이 사용하는 방식으로 가장 중요한 바이트(최상위 바이트)를 가장 낮은 주소에 저장하는 방식입니다. 사람이 숫자를 읽고 쓰는 방법과 같아서 디버깅 .. 2023. 9. 16.
cs - malloc 묵시적 가용 리스트(implicit availability list) 실용적인 할당기는 블록 경계를 구분하고, 할당된 블록과 가용 블록으로 구분하는 데이터 구조를 필요한다. 이 정보를 블록 내에 저장 한 개의 블록은 1워드의 헤더, 데이터, 추가적인 패딩으로 구성된다. malloc은 payload의 시작을 반환한다. 헤더는 블록 크기(헤더와 추가적인 패딩 포함)와 블록이 할당되었는지 가용 상태인지 인코딩한다. -> 더블 워드 정렬 제한조건을 부과한다면 블록 크기는 항상 8의 배수, 블록 크기의 하위 3비트는 항상 0이다. -> 남은 블록 크기의 상위 29비트만 저장할 필요가 있으며 나머지 3비트는 다른 정보를 인코드하기 위해 남겨둔다. 이 경우 블록이 할당되었는지 가용 상태인지를 나타내기 위해 최소 중요.. 2023. 9. 10.
[Mac] 맥 숨긴 파일 보기 및 숨기기 - 표시 끄기 & 켜기 안녕하세요. 이번 포스팅은 맥(Mac)에서 숨긴 파일 보기와 끄기입니다. 숨긴파일을 표시할 폴더에서 command + shift + .(점) 단축키를 누릅니다. 다시, 파일들을 숨기기 위해서 폴더에서 command + shift + .(점) 단축키를 누릅니다. 2023. 9. 2.
c언어 총정리9 - 매크로 선행처리기 - 사용 방법, 잘못된 매크로 선행처리기 컴파일 이전에 처리로 선행처리기가 역할을 담당한다. 삽입해 놓은 선행처리 명령문대로 소스코드의 일부를 수정한다. #으로 시작하고, 명령문 끝에 ;(세미콜론)을 붙이지 않는다. 매크로 코드를 작성할 때 특정한 텍스트 조각을 대체하는 간단한 코드 조각이다. 크기가 작은 함수와 호출 빈도수가 높은 함수를 매크로로 정의한다. 장점 - 일반 함수에 비해 실행 속도가 빠르다. 자료형에 따라서 별도로 함수를 정의x 단점 - 정의가 어렵다. 디버깅이 어렵다. #define: Object-like macro 1 2 #define PI 3.1415 // (지시자) (매크로 이름) (매크로 몸체) 매크로를 마지막에 등장하는 매크로 몸체로 치환한다. 매크로의 이름은 대문자로 정의하는 것이 일반적이다. 1 2 3 4.. 2023. 9. 1.
c언어 총정리8 - 메모리 관리와 동적 할당 - malloc, calloc, realloc, free 함수 메모리 구성 프로그램 실행 시 운영체제에 의해 마련되는 메모리의 구조는 코드, 데이터, 힙, 스택 영역으로 구분된다. 코드 영역 - 프로그램의 코드가 저장, CPU가 저장된 명령문을 하나씩 가져가서 실행 데이터 영역 - 전역변수와 static으로 선언된 변수가 할당, 프로그램 종료 시 까지 남아있다. 스택 영역 - 지역변수와 매개변수가 할당, 함수의 종료 시 소멸 힙 영역 - 원하는 시점에 변수를 할당, 소멸하는 변수 메모리 동적 할당 하나의 전역변수(배열) 사용하면 함수를 호출하게 되면 얻게 된 정보를 유지되지 않는다. 힙 영역에서 함수가 매번 호출 시 새롭게 할당되고, 함수 종료 시 유지되는 변수를 생성한다. malloc, free 함수 힙 영역의 메모리 공간의 할당과 해제를 하고, 함수의 호출 위치.. 2023. 9. 1.
c언어 총정리 6 - 구조체 구조체 정의 C언어에서 구조체는 포인터 변수와 배열 포함한 변수을 묶어서 새 자료형을 정의합니다. 1 2 3 4 5 struct point { int xpos; char name[20]; }; 구조체의 이름이 자료형의 이름이 된다. 기본 자료형은 아니지만, 묶어서 새로운 자료형을 만든 것이다. (사용자 정의 자료형 - user definded data type) 배열도 값이 저장이 가능한 변수의 성격을 가지기 때문에 구조체의 멤버가 될 수 있다. 구조체 변수의 선언과 접근 구조체 변수로 자료형들을 대상으로 변수를 선언할 수 있다. 1 2 // 구조체 변수선언의 기본 형태 struct type_name val_name; 구조체 변수를 선언할 때는 맨 앞에 struct 선언을 추가한다. 생성된 구조체의 접근.. 2023. 9. 1.
c언어 총정리1 - 기본 C언어 기본 1971년 유닉스라는 운영체제를 개발하기 위해 데니스 리치와 켄 톰슨이 함께 설계한 범용적인 고급 언어(High-level) 언어 유닉스는 어셈블리 언어라는 저급(low-level) 언어로 만들어졌기 때문에 하드웨어의 의존도가 높았다. (이식성이 낮다) -> cpu의 종류가 바뀌면 다시 작성 절차지향적 특성 – 정해진 순서의 실행흐름 중시 이식성이 좋다 – cpu의 종류에 상관없이 실행, 운영체제의 차이에 덜 민감 좋은 성능 – 성능에 민감한 소프트웨어의 개발에 주로 사용, 메모리의 양이 상대적으로 적고, 속도를 저하시키는 요소들을 최소화한 언어. 작성, 실행 방법 프로그램 작성 컴파일(Complie) 링크(Link) 실행파일 생성 c프로그램을 이루는 파일의 종류는 소스파일과 헤더파일 등으로.. 2023. 8. 30.
마크다운(Markdown) 하이퍼링크 사용하기 안녕하세요. 이번 포스팅은 마크다운(Markdown)에서 하이퍼링크 삽입하기 입니다. 1 # [제목](https://codeomni.tistory.com/) cs 링크를 걸 단어에 [ ] 괄호로 표시하고 ( ) 사이에 주소를 입력합니다. 2023. 8. 2.
마크다운(Markdown) 줄긋기 안녕하세요. 이번 포스팅은 마크다운(Markdown)에서 줄긋기입니댜. 1 2 3 4 5 * * * *** ***** - - - ------------------ cs 취소선을 긋는 방법은 5개입니다. 1번 ~ 5번 중에서 편한 방법을 사용하면 됩니다. 2023. 8. 1.
[SWEA] SWEA 5549번: 홀수일까 짝수일까 파이썬 풀이 - 알고리즘 코딩 문제 해설 python 안녕하세요. 이번 포스팅은 SWEA의 5549번 문제 풀이입니다. 문제 이름은 "홀수일까 짝수일까" 입니다. 풀이 1 2 3 4 5 6 7 T = int(input()) for tc in range(T): N = int(input()) if N % 2 == 0: print('#%d Even' %(tc+1)) else: print('#%d Odd' %(tc+1)) cs 핵심: 파이썬의 정수 범위는 무한대입니다. 1. 테스트의 수를 입력 받습니다. 2. for문을 통해 테스트 수 만큼 반복합니다. 3. 판별할 수 N을 입력 받습니다. 4~5. 2로 나눈 나머지가 0일 경우 짝수를 출력합니다. 6~7. 2로 나눈 나머지가 1일 경우 홀수를 출력합니다. 2023. 4. 26.
[SWEA] SWEA 1220번: Magnetic 파이썬 풀이 - 알고리즘 코딩 문제 해설 python 안녕하세요. 이번 포스팅은 SWEA의 1220번 문제 풀이입니다. 문제 이름은 "Magnetic" 입니다. 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 for tc in range(10): N = int(input()) l = [list(map(int, input().split())) for i in range(N)] result = 0 for i in range(N): cout = 0 for j in range(N): if l[j][i] == 1: cout = 1 if l[j][i] == 2: if cout == 1: result += 1 cout = 0 print('#%d %d' %((tc+1), result)) cs 핵심: 열우선으로 탐색하여 1이 있을 경우 카운트해서 2을 만날.. 2023. 4. 18.
[SWEA] SWEA 3260번: 두 수의 덧셈 파이썬 풀이 - 알고리즘 코딩 문제 해설 python 안녕하세요. 이번 포스팅은 SWEA의 3260번 문제 풀이입니다. 문제 이름은 "두 수의 덧셈" 입니다. 풀이 1 2 3 4 T = int(input()) for tc in range(T): A, B = map(int, input().split()) print('#%d %d' %((tc+1), A+B)) cs 핵심: 파이썬의 정수 범위는 무한대입니다. 1. 테스트의 개수를 입력 받습니다. 2. for문으로 테스트의 수만큼 반복합니다. 3. A, B를 입력 받습니다. 4. 출력 양식에 맞게 결과값을 출력합니다. 2023. 4. 17.
[SWEA] SWEA 1217번: 거듭 제곱 파이썬 풀이 - 알고리즘 코딩 문제 해설 python 안녕하세요. 이번 포스팅은 SWEA의 1217번 문제 풀이입니다. 문제 이름은 "거듭 제곱" 입니다. 풀이 1 2 3 4 5 6 7 8 9 def mul(N, M): if M 2023. 4. 17.
[SWEA] SWEA 1213번: String 파이썬 풀이 - 알고리즘 코딩 문제 해설 python 안녕하세요. 이번 포스팅은 SWEA의 1213번 문제 풀이입니다. 문제 이름은 "String" 입니다. 풀이 1 2 3 4 5 for tc in range(10): T = int(input()) s_1 = input() s_2 = input() print('#%d %d' %((tc+1), s_2.count(s_1))) cs 핵심: 파이썬의 내장함수인 count() 함수를 사용합니다. 1. 테스트 개수 10만큼 반복합니다. 2. 테스트 순번을 입력 받습니다. 3. 찾을 문자열을 입력 받습니다. 4. 문장을 입력 받습니다. 5. 출력 양식에 맞게 결과값을 출력합니다. 2023. 4. 17.
[SWEA] SWEA 1209번: Sum 파이썬 풀이 - 알고리즘 코딩 문제 해설 python 안녕하세요. 이번 포스팅은 SWEA의 1209번 문제 풀이입니다. 문제 이름은 "Sum" 입니다. 풀이 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 for tc in range(10): T = int(input()) l = [list(map(int, input().split())) for i in range(100)] max = 0 for i in range(100): s = 0 for j in range(100): s += l[i][j] if max 2023. 4. 17.
[SWEA] SWEA 1208번: Flatten 파이썬 풀이 - 알고리즘 코딩 문제 해설 python 안녕하세요. 이번 포스팅은 SWEA의 1208번 문제 풀이입니다. 문제 이름은 "Flatten" 입니다. 풀이 1 2 3 4 5 6 7 8 9 10 11 for tc in range(10): dump = int(input()) l = list(map(int, input().split())) for i in range(dump): l_max = max(l) l_min = min(l) l_max_index = l.index(l_max) l_min_index = l.index(l_min) l[l_max_index] -= 1 l[l_min_index] += 1 print('#%d %d' %((tc+1), max(l)-min(l))) cs 핵심: 리스트로 입력 받아서 최댓값에서 -1, 최솟값에서 +1을 해줍니다.. 2023. 4. 17.
[SWEA] SWEA 14692번: 통나무 자르기 파이썬 풀이 - 알고리즘 코딩 문제 해설 python 안녕하세요. 이번 포스팅은 SWEA의 14692번 문제 풀이입니다. 문제 이름은 "통나무 자르기" 입니다. 풀이 1 2 3 4 5 6 7 T = int(input()) for tc in range(T): N = int(input()) if N % 2 == 1: print('#%d ' %(tc+1) + 'Bob') else: print('#%d ' %(tc+1) + 'Alice') cs 핵심: 입력된 값을 나머지 연산자로 계산합니다. 1. 테스트 개수 T를 입력 받습니다. 2. for문으로 테스트 수 T만큼 반복합니다. 3. 통나무의 길이 N을 입력 받습니다. 4. 홀수일 경우 'Bob'을 출력, 짝수일 경우 'Alice'를 출력합니다. 2023. 4. 17.
[SWEA] SWEA 15758번: 무한 문자열 파이썬 풀이 - 알고리즘 코딩 문제 해설 python 안녕하세요. 이번 포스팅은 SWEA의 15758번 문제 풀이입니다. 문제 이름은 "무한 문자열" 입니다. 풀이 1 2 3 4 5 6 7 8 9 T = int(input()) for tc in range(T): S, T = input().split() s_len = len(S) t_len = len(T) if S * t_len == T * s_len: print('#%d ' %(tc+1) +'yes') else: print('#%d ' %(tc+1) +'no') cs 핵심: 문자열의 크기 만큼 S와 T에 곱해준 뒤에 비교합니다. 1. 테스트 개수 T를 입력 받습니다. 2. for 문을 사용해서 테스트 개수만큼 반복합니다. 3. 문자열 S와 T를 입력 받습니다. 4~5. len() 함수를 사용해서 문.. 2023. 4. 16.
[SWEA] SWEA 15230번: 알파벳 공부 파이썬 풀이 - 알고리즘 코딩 문제 해설 python 안녕하세요. 이번 포스팅은 SWEA의 15230번 문제 풀이입니다. 문제 이름은 "알파벳 공부" 입니다. 풀이 1 2 3 4 5 6 7 8 9 10 11 alpha = 'abcdefghijklmnopqrstuvwxyz' T = int(input()) for tc in range(T): s = input() cout = 0 for i in range(len(s)): if alpha[i] == s[i]: cout += 1 else: break print('#%d %d' %((tc+1), cout)) cs 핵심: 알파벳을 사전에 나열한 후 비교합니다. 1. 알파벳을 사전에 나열합니다. 2. 테스트 개수 T를 입력 받습니다. 3. for 문을 사용해서 테스트 개수만큼 반복합니다. 4. 비교할 문자열을 입력.. 2023. 4. 16.
[SWEA] SWEA 15941번: 평행사변형 파이썬 풀이 - 알고리즘 코딩 문제 해설 python 안녕하세요. 이번 포스팅은 SWEA의 15941번 문제 풀이입니다. 문제 이름은 "평행사변형" 입니다. 풀이 1 2 3 4 T = int(input()) for tc in range(T): N = int(input()) print('#%d %d' %((tc+1), int(N**2))) cs 핵심: 모든 변의 길이가 N인 평행사변형의 넓이는 항상 같습니다. 1. 테스트 개수 T를 입력 받습니다. 2. for 문을 사용해서 테스트 개수만큼 반복합니다. 3. 숫자 N을 입력 받습니다. 4. 출력 양식에 맞게 테스트 개수와 평행사변형의 넓이를 출력합니다. 2023. 4. 16.
반응형