no image
C언어 : strrev() 문자열을 뒤집는 함수
C에는 문자열을 뒤집는 함수는 없나? 해서 알아보니 헤더파일에 포함된 strrev라는 reverse 함수가 있었다.근데 백준에서는 쓸 수 없었음.   검색해보니.. 그러했다.
2025.04.07
no image
포인터 *x++는 안돼! *x+=1로 쓰세요.
백준 16926문제이.. 개노가다같은 문제를 풀었다. 아..배열 2개를 가지고 입력받은 배열(arr)의 원소를 빈 공간의 배열(brr)에 넣는 방식으로 풀었다. 그 중 brr의 좌표를 적절하게 바꾸기 위해 아래 함수를 만들었다.void rotate_brr(int x, int y, int a, int b, int* X, int* Y) { // (a,b) ~ (x,y) if (*X != x-1 && *Y == b) { // 왼쪽 줄 이동 *X+=1; // *X++ 나 *X--로 작성하면 제대로 동작 X } else if (*X == x-1 && *Y != y-1) { // 아랫줄 이동 *Y+=1; } else if (*X != a && *Y == y-1) { // 오른쪽 줄 이동 *X-=1; } el..
2025.02.13
no image
정수에서 문자열로 int -> char[] 형변환하기
sprintf(arr, "%d", n);문자열 arr에 n의 값을 넣어준다.  3의 배수인지 아닌지를 구하는 방법에는 이런 방법이 있다고 한다.1. 각 자릿수를 더한다. 2. 한자릿수가 될 때까지 반복한다. 3. 한자리 수가 되면, 그 값이 3으로 나뉘어지는지 확인한다. 3으로 나누어진다면 3의 배수이다. 반복횟수와 3의배수인지(YES/NO)를 출력하는 문제. 정수의 각 자릿수를 더하는 방식은 너무 오래걸리기 때문에 문자열로 만들어서 해결했다.#include #include #define _CRT_SECURE_NO_WARNINGSint main() { int x = 0; // 반복 횟수 int sum; char arr[1000001] = {}; scanf("%s", &arr); // 입력받은 게 이..
2025.01.30
no image
17478 : strcat 문자열 뒤에 추가하기
재귀함수 문제. (참고로 재귀함수는 영어로 recursive function이라고 한다.) strcpy는 복사, strstr은 문자열에서 문자열 찾기, strcat은 문자열의 뒤에 문자열을 추가하는 함수이다.반대로 잘라내서 뒤를 잘라내는 함수도 있겠거니, 찾아봤지만 없었다. 어째서 #include #include #define _CRT_SECURE_NO_WARNINGSvoid recursive(int x);int N;char low[100000] = {};int main() { int n; scanf("%d", &n); printf("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n"); N = n; recursive(n); return 0;}void recursive(int x) { if..
2025.01.19
no image
백트래킹 - 15649 N과 M (1)
백트래킹 : 현재 가능한 상태에서 모든 후보군을 따라 들어가며 탐색하는 알고리즘. 코드#include void fn(int x);int n, m;int arr[8] = {};int isused[9] = {}; /* 1~8의 숫자가 들어갈 거라서, isused[8]로 만들어버리면 isused[0]~isused[7]이 만들어지기 때문에 isused[i]=1을 설정할 때 i가 8이면 값이 들어가지 못함.*/int main() { scanf_s("%d %d", &n, &m); fn(0);}void fn(int x) { if (x == m) { for (int i = 0; i  실수가 있었던 부분에 주석을 달아놨다. 참고한 블로그 [..
2025.01.11
no image
15720 : 카우버거 (함수에 매개변수로 포인터 넣기)
문제는 뭐.. 별건 없음. 걍 메뉴 총합이랑, 세트메뉴 시 할인되는 총합 두개 출력하는 거임. 걍 내가 착각하고 있던 게 하나 있어서 적어둠.void putarray(int a, int small, int arr[], int *sum, int *disum) { for (int i = 0; i 이건 내가 만든 함수임. 내가 착각하고 있던 게 뭐냐면 int나 double과 같이 하나의 그런.. 값을 매개변수로 어떤 함수에 주고, 함수에서 그 값을 바꿔도 main 함수에선 바뀌지 않음. 그러므로 배열도 그럴 것이다. 이렇게 생각함. 함수에 배열을 매개변수로 넣을 시 -> main 함수에 있는 배열도 바뀜.정수나 실수는 포인터로 넣어주면 됨.putarray(a, small, arr, &sum, &disum);이..
2025.01.04
no image
7770 : 아즈텍 피라미드
계속 에러가 떠서 남들이 어떻게 풀었는지 검색해봤더니, 2x^2+2x+1 이 공식을 사용하여sum+= 2x^2+2x+1 이런 형태로 풀어냈다.나는 빡대가리라 그런가 저 공식을 어떻게 구해내는지 머리가 안 돌아가서 그냥 내 방식대로 풀었다. 어쨌든 접근법은 맞기에, 그냥 그림 그려가면서 이해를 하고 풀음. #include int main() { int n; int x = 1; int bottom = 0; int sum = 1; scanf("%d", &n); while (1) { sum = sum + (4 * x - 4) + bottom; // 이전의 것 + 밑면의 넓이 겉부분 + 이전 밑면 if (x == 1) bottom = 1; bottom += (4 * x - 4); //printf("su..
2024.11.27
no image
10820 - 문자열 분석 : EOF 입력
#include #include #define _CRT_SECURE_NO_WARNINGSint main() { while (1) { int small = 0, big = 0, integer = 0, space = 0; char arr[101] = {}; scanf("%[^\n]s", &arr); getchar(); if (arr[0] == NULL || arr[0]==EOF) ////수정 return 0; int len = strlen(arr); for (int i = 0; i  처음에 조건문에 (문자열==EOF) 이런 형식으로 넣어서 에러. (EOF는 문자형이다.)EOF 입력 시 프로그램이 ..
2024.11.25
no image
30501 - 문자열 복사해서 대입하기(strcpy)
처음에 컴파일 에러가 떠서 뭔 실수를 했나 봤음.name[101], suspect[101] 이렇게 있고 suspect 중 범인을 찾으면 해당 이름을 name에 대입하는 것이었음. 근데 내가 name=suspect 이렇게 적음.strcpy(name,suspect)로 수정했더니 해결. (name에 suspect를 붙여넣는것. name에 든게 없어서 대입한 suspect랑 동일한 문자열이 됨)
2024.11.22