전체 글 349

[컴퓨터과학의이해🧮] 데이터 조작 (2장)

교재 : 컴퓨터 과학 총론 (13th Edition)(배운 내용을 책으로 복습하며 작성한 글입니다. )1. 컴퓨터 구조- 중앙처리장치 (central processing unit ; CPU) : 데이터 조작을 제어하는 컴퓨터 안의 회로, 프로세서라 불리기도 한다. - 마이크로프로세서(microprocessor)  : 크기가 매우 작은 프로세서 1) CPU 기초- 구성 :  연산장치, 제어장치, 레지스터 장치연산장치 (arithmeitc/logic unit) : 데이터에 대한 덧셈이나 뺄셈 연산을 수행하는 회로를 포함한다. 제어장치 (control unit)  :컴퓨터의 동작을 조정하는 회로레지스터 장치 (register unit) : *레지스터(register)라 불리는 데이터 저장용 셀들을 갖고 있다...

[컴퓨터과학의이해🧮] 데이터의 저장 (1장)

교재 : 컴퓨터 과학 총론 (13th Edition)(배운 내용을 책으로 복습하며 작성한 글입니다. )1. 비트의 저장: 컴퓨터 안에서 정보는 0과 1들의 패턴으로 표현된다. 이러한 숫자를 비트라고 한다.  1) 부울 연산AND 연산 :  둘 다 참일 때만 참OR 연산 : 둘 중 적어도 하나가 참이면 참XOR 연산 : 두 입력값이 서로 다를 경우 1을 출력NOT 연산 : 입력의 반대를 출력 2) 게이트와 플립플롭게이트 : 부울 연산의 입력 값들이 주어질 때 연산 결과를 출력하는 장치 ( == 논리 게이트)- 오늘날의 컴퓨터 안에 사용되는 게이트는 트랜지스터(전압 수준에 따라 0과 1을 나타냄)로 만들어져있다. 플립플롭 : 컴퓨터 메모리의 기본 단위- 게이트들을 조합하여 만든 하드웨어 부품- 0 또는 1을..

[백준/C & C++] 1225 이상한 곱셈

https://www.acmicpc.net/problem/1225 1225번: 이상한 곱셈 첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는 음이 아닌 정수이다. 수가 0인 경우에는 0만 주어지며, 그 외의 경우 수는 0으로 시작하지 않는다. www.acmicpc.net 코드 (C) #include #include int main() { char a[100001], b[100001]; long long sum = 0; scanf("%s %s", a, b); int alen = strlen(a); int blen = strlen(b); for (int i = 0; i < alen; i++) for (int j = 0; j < blen; j++) sum += (int)(a[..

PS (C, C++) 2022.08.24

[백준/C] 1718 암호

https://www.acmicpc.net/problem/1718 1718번: 암호 Vigenere cipher이라는 암호화 방법은 암호화하려는 문장 (평문)의 단어와 암호화 키를 숫자로 바꾼 다음, 평문의 단어에 해당하는 숫자에 암호 키에 해당하는 숫자를 더하는 방식이다. 이 방법을 변 www.acmicpc.net 코드 #include #include int main() { char string[30001]; scanf("%[^\n]s", &string); int len = strlen(string); char key[300001]; scanf("%s", &key); int keyLen = strlen(key); for (int i = 0; i < len; i++) { if (string[i] == '..

PS (C, C++) 2022.08.24

[컴퓨터과학의이해🧮] 서론 (0장)

교재 : 컴퓨터 과학 총론 (13th Edition)(배운 내용을 책으로 복습하며 작성한 글입니다. )1. 알고리즘의 역할1) 알고리즘알고리즘 : 작업을 수행하는 방법을 정의하는 단계들의 집합프로그램 : 알고리즘의 표현방식 중 하나프로그래밍 : 프로그램을 컴퓨터가 처리할 수 있는 형식으로 인코딩하여 컴퓨터 안에 저장시키는 과정 (==코딩) 2) 소프트웨어와 하드웨어소프트웨어 : 프로그램과 이들이 나타내는 알고리즘하드웨어 : 컴퓨터 장치 자체 3) 알고리즘에 관한 연구- 수학의 한 분야에서 시작함- 알고리즘에대한 초창기 연구 예시ex) 나눗셈법 알고리즘, *유클리드의 호제법 알고리즘 * 유클리드의 호제법 알고리즘두 개의 자연수가 입력되는 것을 가정한다. ① 두 입력값 중 큰 값을 M, 작은 값을N에 배정한..

[백준/C] 1547 공

https://www.acmicpc.net/problem/1547 1547번: 공 첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어지며, X번 컵과 Y번 컵의 위치를 서로 바꾸는 것 www.acmicpc.net 코드 #include void swap(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; } int findIndex(int a, int arr[]) { for (int i = 0; i < 3; i++) if (a == arr[i]) return i; return -1; } int main() { int m, arr[3] = {1,2,3}; int a,..

PS (C, C++) 2022.08.22

[백준/C] 1076 저항

https://www.acmicpc.net/problem/1076 1076번: 저항 첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다. www.acmicpc.net 코드 #include #include #include int findIndex(char str[], char arr[][10]) { for (int i = 0; i < 10; i++) if (strcmp(str,arr[i]) == 0) return i; return -1; } int main() { long long result = 0; char a[10], b[10], c[10], arr[10][10] = { "black", "brown", "red", "orange..

PS (C, C++) 2022.08.22

[백준/C] 1085 직사각형에서 탈출

https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 코드 #include int main() { int x, y, w, h, xlen, ylen; scanf("%d %d %d %d", &x, &y, &w, &h); xlen = x; ylen = y; if (w - x ylen) printf("%d", ylen); else p..

PS (C, C++) 2022.08.22

[백준/C] 1598 꼬리를 무는 숫자 나열

https://www.acmicpc.net/problem/1598 1598번: 꼬리를 무는 숫자 나열 첫째 줄에 원숭이가 생각한 두 개의 자연수가 주어진다. 각 수는 10,000,000 이하이다. www.acmicpc.net 코드 #include #include int main() { int a, b; scanf("%d %d", &a, &b); int aX = (a-1) / 4; int aY = (a -1)% 4; int bX = (b - 1)/4; int bY = (b - 1) % 4; printf("%d", abs(aX - bX) + abs(aY - bY)); return 0; } 코드 설명 표를 보고 a와 b의 좌표를 식으로 정리한다. (이때 좌표는 길이를 구하는 용으로만 사용한다.) 1~4까지, ..

PS (C, C++) 2022.08.22

[백준/C] 1159 농구 경기

https://www.acmicpc.net/problem/1159 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net 코드 #include int main() { int n, countNum = 0; scanf("%d", &n); char name[151][31]; char first[151]; int count[26] = {0}; for (int i = 0; i < n; i++) { scanf("%s", name[i]); first[i] = name[i][0]; } for (int i = 0; i < n; i++) {..

PS (C, C++) 2022.08.21