자료구조와 알고리즘 42

[문자 표현의 이해] 아스키코드(ASCII)와 유니코드

💙 배경지식 컴퓨터 내부는 전기 신호로 작동하는 스위치인 트랜지스터가 존재 전기 신호가 있으면 1, 없으면 0 즉, 컴퓨터는 트랜지스터를 통해 사용자가 입력한 데이터를 0과 1로 처리 비트 : 0과 1로 표현하는 최소 단위 / 바이트(8비트) : 정보를 표현하는 기본 단위 A. 아스키코드(ASCII) 1. 아스키코드란? a. 정의 7비트 인코딩, 0부터 127까지의 정수값을 갖고 이 128개의 정수값에 각각 0과 1의 숫자 조합으로 대응시킨 문자 인코딩 방식 컴퓨터는 2진수밖에 인식하지 못하므로 문자도 숫자로 표현해야 인식 따라서 어떤 문자를 어떤 숫자에 대응시킬 것인가에 대한 약속이 필요 이러한 약속 중에서 가장 많이 사용되는 것이 바로 아스키코드(ASCII) 💙 8비트가 아니라 7비트인코딩인 이유 나..

[Baekjoon] 단계별로 풀어보기 : 기하 직사각형과 삼각형

이번 알고리즘 문제 풀이는 C로 진행했습니다 코드에 오탈자나 문제가 있으면 언제든지 댓글로 알려주세요! A. 기하 직사각형과 삼각형 기하: 직사각형과 삼각형 단계 기하: 직사각형과 삼각형 www.acmicpc.net 1. 직사각형 a. 문제지 : 27323 b. 정답 A*B 넓이를 구하면 되는 쉬운 문제! HTML 삽입 미리보기할 수 없는 소스 #include int main(){ int A, B; scanf("%d %d", &A, &B); printf("%d", A*B); } 2. 직사각형에서 탈출 a. 문제지 : 1085 b. 알고리즘 / 풀이 경계선까지 가는 방법은 위 그림과 같이 4가지 방법이 있음 X는 0이나 W, Y는 0이나 H 따라서 4개의 값을 비교하면 끝! c. 정답 HTML 삽입 미리보..

[Baekjoon] 단계별로 풀어보기 : 약수, 배수와 소수

이번 알고리즘 문제 풀이는 C로 진행했습니다 코드에 오탈자나 문제가 있으면 언제든지 댓글로 알려주세요! A. 약수, 배수와 소수 약수, 배수와 소수 단계 약수를 구하면서 주어진 수가 완전수인지 판별하는 문제 www.acmicpc.net 1. 배수와 약수 a. 문제지 : 5086 b. 풀이 입력은 여러개의 테스트 케이스로 이루어져 있다 = 입력을 반복문으로 받아야 함 c. 정답 HTML 삽입 미리보기할 수 없는 소스 #include int main() { while (1) { // 무한 루프 시작 int A, B; scanf("%d %d", &A, &B); if (A == 0 && B == 0) break; // 입력이 0 0이면 루프 종료 // 첫 번째 숫자가 두 번째 숫자의 약수인지 확인 if (B %..

[Baekjoon] 단계별로 풀어보기 : 일반 수학 1

이번 알고리즘 문제 풀이는 C로 진행했습니다 코드에 오탈자나 문제가 있으면 언제든지 댓글로 알려주세요! A. 일반 수학 1 일반 수학 1 단계 벌집이 형성되는 규칙에 따라 벌집의 위치를 구하는 문제 www.acmicpc.net 1. 진법 변환 a. 문제지 : 2745 b. 알고리즘 / 풀이 입력 받을 문자열 N과 변환할 진법 B를 선언하고 입력받음 문자를 숫자로 변환하는 함수 getNumber를 정의 a) 주어진 문자가 '0'부터 '9' 사이인 경우 해당 숫자로 변환 b) 'A'부터 'Z' 사이인 경우 10부터 35까지의 숫자로 변환하여 반환 입력된 문자열 N의 길이를 계산 결과를 저장할 변수 result를 초기화 입력된 문자열의 각 자릿수에 대해 반복문을 실행 a) getNumber(N[length -..

[Baekjoon] 단계별로 풀어보기 : 2차원 배열

이번 알고리즘 문제 풀이는 C로 진행했습니다 코드에 오탈자나 문제가 있으면 언제든지 댓글로 알려주세요! A. 2차원 배열 2차원 배열 단계 2차원 배열을 활용하여 색종이로 평면을 덮는 문제 www.acmicpc.net 1. 행렬 덧셈 a. 문제지 : 10807 b. 알고리즘 / 풀이 1) 2차원 배열을 1차원 배열로 풀어서 계산 n과 m을 입력받아 행렬의 크기를 설정 totalnum을 n * m으로 계산하여 배열의 총 원소 수를 계산 첫 번째 배열 numarr1과 두 번째 배열 numarr2를 선언 첫 번째 배열 numarr1에 n 행과 m 열에 대한 원소들을 순서대로 입력 count 변수를 초기화 두 번째 배열 numarr2에 n 행과 m 열에 대한 원소들을 순서대로 입력 두 배열의 같은 인덱스의 값을..

[Baekjoon] 단계별로 풀어보기 : 심화 1

이번 알고리즘 문제 풀이는 C로 진행했습니다 코드에 오탈자나 문제가 있으면 언제든지 댓글로 알려주세요! A. 심화 1 심화 1 단계 두세 문자가 한 글자로 묶일 수 있을 때 글자의 수를 세는 문제 www.acmicpc.net 1. 새싹 a. 문제지 : 25083 b. 정답 HTML 삽입 미리보기할 수 없는 소스 #include int main(){ printf(" ,r'\"7\n"); printf("r`-_ ,' ,/\n"); printf(" \\. \". L_r'\n"); printf(" `~\\/\n"); printf(" |\n"); printf(" |\n"); return 0; } 2. 킹, 퀸, 룩, 비숍, 나이트, 폰 a. 문제지 : 10871 b. 정답 HTML 삽입 미리보기할 수 없는 소스 ..

[Baekjoon] 단계별로 풀어보기 : 문자열

이번 알고리즘 문제 풀이는 C로 진행했습니다 코드에 오탈자나 문제가 있으면 언제든지 댓글로 알려주세요! A. 문자열 문자열 단계 정수를 문자열로 입력받는 문제. Python처럼 정수 크기에 제한이 없다면 상관 없으나, 예제 3은 일반적인 정수 자료형에 담기에 너무 크다는 점에 주목합시다. www.acmicpc.net 1. 문자와 문자열 a. 문제지 : 27866 b. 정답 HTML 삽입 미리보기할 수 없는 소스 #include #include int main() { char S[1001]; // 단어를 저장할 배열, 최대 길이보다 큰 크기로 지정 int i; // 정수 i를 저장할 변수 // 단어 입력 받기 scanf("%s", S); // 정수 i 입력 받기 scanf("%d", &i); // 인덱스가..

[Baekjoon] 단계별로 풀어보기 : 1차원 배열

이번 알고리즘 문제 풀이는 C로 진행했습니다 코드에 오탈자나 문제가 있으면 언제든지 댓글로 알려주세요! A. 1차원 배열 1차원 배열 단계 배열을 활용하여 서로 다른 값의 개수를 찾는 문제 www.acmicpc.net 1. 개수 세기 a. 문제지 : 10807 b. 정답 HTML 삽입 미리보기할 수 없는 소스 #include int main() { int N; scanf("%d", &N); // 정수의 개수 int arr[N]; for (int i = 0; i < N; ++i) { scanf("%d", &arr[i]); // 정수 입력 } int v; scanf("%d", &v); // 찾으려는 정수 int count = 0; for (int i = 0; i < N; ++i) { if (arr[i] ==..

[Baekjoon] 단계별로 풀어보기 : 반복문

이번 알고리즘 문제 풀이는 C로 진행했습니다 코드에 오탈자나 문제가 있으면 언제든지 댓글로 알려주세요! A. 반복문 반복문 단계 코딩 공부를 잘 하여 이렇게 long long long long...을 칠판에 적는 일이 없도록 합시다. www.acmicpc.net 1. 구구단 a. 문제지 : 2739 b. 정답 HTML 삽입 미리보기할 수 없는 소스 #include int main(){ int A; scanf("%d", &A); if(A>=1 && A HTML 삽입 미리보기할 수 없는 소스 #include int main(){ int T, A, B; scanf("%d", &T); for(int i=0; i HTML 삽입 미리보기할 수 없는 소스 #include int main() { int A, sum =..

[Baekjoon] 단계별로 풀어보기 : 조건문

이번 알고리즘 문제 풀이는 C로 진행했습니다 코드에 오탈자나 문제가 있으면 언제든지 댓글로 알려주세요! A. 조건문 조건문 단계 점이 어느 사분면에 있는지 알아내는 문제 www.acmicpc.net 1. 두 수 비교하기 a. 문제지 : 1330 b. 정답 HTML 삽입 미리보기할 수 없는 소스 #include int main(){ int A, B; scanf("%d %d", &A, &B); if(A>B){ printf(">\n"); }else if(A HTML 삽입 미리보기할 수 없는 소스 #include int main() { int score; scanf("%d", &score); if (score >= 90 && score = 80) { printf("B\n"); } else if (score >=..