본문 바로가기

알고리즘 기초시절44

[비트연산]대소문자 변경을 비트연산으로 해보자. 대소문자 변경을 할 때 우리는 XOR연산을 통해 쉽게 할 수 있다.A^32를 해주게 되면 a가 되고 a^32해주게 되면 A가 된다.이건 매우 간단하게 설명이 가능한데, a와 A가 아스키 코드 값으로 32만큼 차이가 나기 때문이다.a 는 아스키 코드 값으로 97 A는 65 이다.둘 사이 차이는 32로 서로 32를 더하고 빼면 나오는 값이다. 비트로 보기a = 97을 8비트로 보면 0110,0001 이고 A = 65 [0100,0001] 이다.이걸 조금 더 보면 알파벳의 갯수는 26개이고, 각각을 비트로 표현하면 A = [0100,0001](65) Z =[0101,101](90)이다.a = [0110,0001](97) z = [0111,1010](122)이다.따라서 A^32가 어떤의미인가, 32를 비트로 표.. 2023. 1. 15.
이코테 구현알고리즘 예제 1번 상하좌우 -방향벡터 (C언어) #include int main() { int input; scanf("%d", &input); //int map[100][2];//0:x 1:y int x = 1; int y = 1; char order[2]; for (int i = 0; i 1) x--; else if (order[0] == 'R' && x 1) y--; else if (order[0] == 'D' && y < input) y++; } printf("%d %d", y, x); } 난 이렇게 풀었는데 방향 벡터를 이용해서 푸는 방법이 더 깔끔한 것 같다. dx[4] = {0, 0, 1, -1};(행) dy[4] = {1, -1, 0, 0};(열)이렇게 미.. 2023. 1. 8.
백준 왕실의 나이트(C) 수학적 풀이, 완전 탐색적 풀 #include int main() { int count = 8; char input[3]; scanf("%s", input); int check = input[0] + input[1] - 'a' - '1'; if (check == 0 || check == 14) count -= 6; else if (check == 1 || check == 13) count -= 5; else if (check == 2 || check == 12) count -= 4; else if (check == 3 || check == 11) count -= 3; else if (check == 4 || check == 10) count -= 2; printf("%d", count); } 좀 이상하게 조건문에 꽂쳐서 수학적으로 풀.. 2023. 1. 8.
백준 (C언어) (구현) 게임개발 -방향벡터 및 맵 탐색 #include #include int main() { int length, width;//세로, 가로 int x, y, direction;//방향은 0:북, 1:동, 2:남, 3:서 int** map;// 세로 가로, 0육지 1바다 scanf("%d %d", &length, &width); map = (int**)malloc(sizeof(int*) * (length)); //int move[4][2] = {{0,-1}, {1,0}, {0,1}, {-1,0}};//북, 동, 남 ,서 int move[4][2] = { {0,1}, {-1,0} ,{0,-1} ,{1,0} };//북,서,남,동 scanf("%d %d %d ", &x, &y, &direction); for (int i = 0; i < lengt.. 2023. 1. 8.
[백준 BOJ 10816번] 숫자 카드 2 (C++ ) 틀린코드 #include #include using namespace std; int find_result(int* arr1,int find_num,int start,int end) { int count = 0; int tmp; while (start input_num; int arr1[500001]; for (int i=0; i >arr1[i]; sort(arr1, arr1+input_num); int n_input_num; cin >>n_input_num; int find_num; int result = 0; for (int i = 0; i >find_num; result = find_result(arr1,find.. 2023. 1. 8.
백준 c++백준 1181번 단어정렬 (부제 :c++의 말도 안되는 편리함) 실패코드 #include #include using namespace std; int ft_strcmp(char *str1, char *str2) { if(strlen(str1) !=strlen(str2)) { if (strlen(str1) > strlen(str2)) return (1); else return (-1); } while (*str1 == *str2 && *str1 && *str2) { str1++; str2++; } return (*str1 - *str2); } int main() { int inputnum; cin >> inputnum; char **arr = new char*[inputnum + 1]; char *tmp; for (int i = 0; i < inputnum; i++) .. 2023. 1. 5.
백준 c++[백준 BOJ 10816번] 숫자 카드 2 (C++ ) 실패코드 #include #include using namespace std; int find_result(int* arr1,int find_num,int start,int end) { int count = 0; int tmp; while (start input_num; int arr1[500001]; for (int i=0; i >arr1[i]; sort(arr1, arr1+input_num); int n_input_num; cin >>n_input_num; int find_num; int result = 0; for (int i = 0; i >find_num; result = find_result(arr1,find.. 2023. 1. 5.
백준 c++백준 11866번 요세푸스 문제 #include #include using namespace std; int main(){ queue people; int n, k, removedPeopleNum = 0; int current = 1; cin >> n >> k; for(int i = 1; i 2023. 1. 5.
백준 c++1654번 랜선 자르기 문제 실패코드 //시간 초과 코드 아무리 시간을 줄이려고 노력해도 이분탐색을 사용하지 않는다면 절대로 풀수 없는 범위가 나오는 문제이다. #include #include using namespace std; int main() { int k,n; cin >> k >> n; int count, result; int *input = new int[k]; for (int i =0; i > input[i]; } count = 0; sort(input ,input +k); int tk = k; for (int i = input[tk-1] ; tk >0; tk--) { count = 0; for (int j = 0; j < k; j++) { count +=input[j] / i; } if .. 2023. 1. 5.