본문 바로가기
반응형

알고리즘/[EXP] 삼성 SW 역량 테스트 C형25

비트 압축 - 허프만 알고리즘 (Simple Huffman Coding Algorithm) 삼성 C형 전체 링크 참고 - 카드 섞기 알고리즘 - 비트 단위로 출력하기 - 33% 압축하기 - 37.5% 압축하기 1 (8bit : 5bit) - 37.5% 압축하기 2 (16bit : 10bit ~) - 허프만 알고리즘 320개의 'A', 160개의 'B', 80개의 'C', 40개의 'D', 그리고 10개의 'E', 'F', 'G', 'H'가 랜덤으로 분포된 크기 640의 배열이 있다. unsigned char problem[640 + 1] = { 0 }; int cnt = 0; for (int i = 0; i < 320; i++) problem[cnt++] = 'A'; for (int i = 0; i < 160; i++) problem[cnt++] = 'B'; for (int i = 0; i <.. 2023. 9. 2.
char 타입 배열을 다른 타입의 메모리로 사용하기 삼성 C형 전체 링크 정수 500 ~ 1000을 char 타입 memory[1000]에 넣어보자. #include char memory[1000]; void memoryWrite(char memory[]) { for (int i = 500; i < 1000; i++) memory[i - 500] = i; } void memoryRead(char memory[]) { for (int i = 0; i < 500; i++) printf("%d\n", memory[i]); } int main() { memoryWrite(memory); memoryRead(memory); return 0; } 당연히 char 타입은 unsigned인 경우에도 255까지만 넣을 수 있기 때문에 위의 결과가 나오게 된다. 하지만 메.. 2023. 8. 26.
타입 캐스팅으로 입력 빨리 받기, 비트 연산으로 메모리 압축하기 삼성 C형 전체 링크 참고 - 비트 단위로 출력하기 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input 카드 4장이 한 세트로 있고 각 카드에 점수가 있다고 가정하자. 카드 : 0 0 0 0 ~ 카드 : 9 9 9 9로 총 10000개의 카드 세트가 존재한다. 그리고 카드 a b c d 의 점수는 abcd (a * 1000 + b * 100 + c * 10 + d)라고 하자. char card[10000][4]; int answer[10000]; void makeCard() { int count = 0; for (int a = 0; a < 10; a++) for (int b = 0; b < 10; b++) for (int c = 0; c < 10; c++) for (int d .. 2023. 8. 26.
36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input 삼성 C형 전체 링크 참고 - 타입 캐스팅으로 입력 빨리 받기, 비트 연산으로 메모리 압축하기 - BOJ 10757 : 큰 수 A+B - BOJ 10757 : 큰 수 A+B with 10^N진법 - BOJ 2338 : 긴자리 계산 - BOJ 2338 : 긴자리 계산 with 10^N진법 - 36진법 긴자리 두 수의 곱셈 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input 아래와 같이 10자리 문자열로 된 숫자가 있다고 가정하자. char number10[] = "1234567890"; 이 문자열로 된 숫자를 int로 바꾸려면 for문을 10번 순회해야 한다. #include char number10[] = "12345678.. 2023. 8. 26.
36진법 긴자리 두 수의 곱셈 with 36^5진법 삼성 C형 전체 링크 참고 - BOJ 10757 : 큰 수 A+B - BOJ 10757 : 큰 수 A+B with 10^N진법 - BOJ 2338 : 긴자리 계산 - BOJ 2338 : 긴자리 계산 with 10^N진법 - 36진법 긴자리 두 수의 곱셈 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input BOJ 2338 : 긴자리 계산 with 10^N진법를 참고하여 36^5진법으로 개선이 가능하다. 아래와 같이 진법 계산을 위해 define을 정의하자. (36 ~ 36^5) typedef unsigned long long int ull; #define ONE (36ull) #define TWO (1296ull) #defi.. 2023. 8. 26.
36진법 긴자리 두 수의 곱셈 삼성 C형 전체 링크 참고 - BOJ 10757 : 큰 수 A+B - BOJ 10757 : 큰 수 A+B with 10^N진법 - BOJ 2338 : 긴자리 계산 - BOJ 2338 : 긴자리 계산 with 10^N진법 - 36진법 긴자리 두 수의 곱셈 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input 앞자리가 0이 아닌 100자리 36진법(0 ~ 9, A ~ Z) 두 수를 곱해보자. #include #include #define LENGTH_NUMBER (100 + 1) #define LENGTH_OPERANDS (100 + 1) #define LENGTH_RESULT (200 + 2) #define TC_COUNT (.. 2023. 8. 26.
BOJ 2338 : 긴자리 계산 with 10^N진법 알고리즘 문제 전체 링크 삼성 C형 전체 링크 https://www.acmicpc.net/problem/2338 참고 - BOJ 10757 : 큰 수 A+B - BOJ 10757 : 큰 수 A+B with 10^N진법 - BOJ 2338 : 긴자리 계산 - BOJ 2338 : 긴자리 계산 with 10^N진법 - 36진법 긴자리 두 수의 곱셈 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 - 36진법 긴자리 두 수의 곱셈 with 36^5진법 + Fast Input 큰 수 A+B with N진법을 참고하여 뺄셈과 곱셈도 마찬가지로 N진법을 적용해보자. 덧셈의 경우 100000000000000000진법까지 가능했지만, 곱셈은 자릿수가 2배로 오르기 때문에 100000000진법(0이 8개)까지만 가.. 2023. 8. 26.
긴자리 후위 표기법 구현하기 삼성 C형 전체 링크 참고 - 후위 표기식 - 중위 표기식 BOJ 1918 : 후위 표기식을 참고하면, 아래의 규칙대로 중위 표기식을 후위 표기식으로 바꿀 수 있다. 1. stack이 비어있거나 열린 괄호 "(" 는 stack에 넣는다. 2. 열린 괄호 "(" 다음의 연산자는 stack에 넣는다. 3. 현재 stack의 가장 위에 있는 연산자보다 우선순위가 큰 연산자는 넣는다. ( * = / > + = - ) 4. 현재 stack의 가장 위에 있는 연산자보다 우선순위가 낮은 연산자가 들어오려고 한다면, 스택이 비거나, 열린 괄호 "(" 가 나오거나 해당 우선순위가 더 커질 때까지 스택을 비우고, 연산자를 넣는다. 5. 닫힌 괄호 ")" 가 나오면 열린 괄호 "(" 가 나올 때까지 스택을 비운다. 이때, .. 2023. 8. 25.
BOJ 5397 : 키로거 with 세그먼트 트리, 링크드 리스트 삼성 C형 전체 링크 알고리즘 문제 전체 링크 https://www.acmicpc.net/problem/5397 참고 - BAPC 2010 I번 문제 - BOJ 5397 : 키로거 (스택) - 링크드 리스트 Linked List - 링크드 리스트 삭제 - 구간 합 구하기 with 바텀 업 세그먼트 트리 (Bottom-Up Segment Tree) - BOJ 1655 : 가운데를 말해요 with 세그먼트 트리 - 세그먼트 트리를 이용한 링크드 리스트의 삽입과 삭제 - BOJ 5397 : 키로거 with 세그먼트 트리, 링크드 리스트 위 문제를 스택을 이용한 방법 대신, 세그먼트 트리와 링크드 리스트로 풀어보자. 다만 이 방법으로는 이 문제의 tc를 시간 내에 통과할 수 없다. 키로거는 커서를 한 칸씩 이동.. 2023. 8. 25.
반응형