C언어 25

1018번

임의로 8*8 을 자르고 그 중 제일 색칠할칸이 적은 값을 출력결국 1*1 도 정사각형이라 칸의 수를 출력하면됨  1. 8*8 정사각형으로 자르려면 최소 8칸은 남아 있어야함남은게 8칸 미만일시 실행x ,  for (int i = 0; i 2. 자른 정사각형이 체스판형태가 아니라면 칠해야함  0 1 2 3 4 5 6 7 // 8칸 첫번째) 좌상단이 W 인경우 >  짝수 W, 홀수 B// 첫번째 좌상단 Wif ((x + y) % 2 == 0) { if (board[i + x][j + y] != 'W') paint1++;} else { if (board[i + x][j + y] != 'B') paint1++;}// 두번째 좌상단 Bif ((x + y) % 2 == 0) { if (board[..

C언어/백준 2024.11.26

FIFO 메모리관리

FIFO 메모리 ~= 선입선출용량 : 3칸 읽어온것을 내보내고 다음걸 읽어내고 내보내고..용량을 초과해서 추가, 제거 : 에러 void enqueue(QU* qu, int value) { if ((qu->front - qu->rear) == SIZE || (qu->front - qu->rear) == -SIZE) { // 큐가 꽉 찬 경우 printf("Error: enqueue when full(value %d ignored)\n", value); return; } printf("[%d] front % SIZE, value); // 삽입 정보 출력 qu->mem[qu->front % SIZE] = v..

C언어/백준 2024.11.24

2789번, 2231번

2789번1. 3장의 카드가 중복되지 않아야함.2)----------------------------ex) 5장 카드 1,2,3,4,5 1-2-3 1-2-4 1-2-5 1-3-4 1-3-5 1-4-5 2 .... 3 .... ---------------------------나머지 두장 카드 때문에 첫번째 카드의 N-2 까지만나머지 두장 카드 때문에 세번째 카드는 k+2 부터  for (int i = 0; i   2231번자릿수 값의 최대치는 9*6 ( ex) 999999 (9+9+9+9+9+9)  continue : 루프를 끝내는게 아니라 해당 조건만 pass 하므로 N =53 일때 i=-1 , 0, 1, 2, ,,, 10 >  i=-1 을 건너뜀 for (int i = N - 9 * 6; i  216..

C언어/백준 2024.11.23

5073번, 14215번

5073번 1.가장 긴변에서 나머지 두변을 뺌a + b + c - max_side  어떤게 max_side 가 될지 모르니 ( max_side - a? b? c?)   > 전체 더한것에서 max_side 를뻄 1-1 ) 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다.       ==  두변의 합은 나머지 한변보다는 무조건 길다if (a + b   작은 경우 > printf("Invalid\n");   14215번 1, 오름차순 정리 // 작은것부터 크도록if (a > b) { int temp = a; a = b; b = temp; }if (b > c) { int temp = b; b = c; c = temp; }if (a > b) { int temp = ..

C언어/백준 2024.11.21

2581번, 11653번, 1085번, 3009번

2581번bool 타입 : return 값이 true falsebool is_prime(int num) { if (num a)  1은 xb) sqrt(36) = 6 , 6 * 6= 36거듭제곱근이 제곱의 숫자를 넘기 전까지만 확인하면됨 c) 나머지는 소수이므로 true for문속에if (min_prime == -1) {    min_prime = i;} : i 값이 한번 저장 되면 다른 값으로 저장 되지 않음 11653번a) 2 4 6  8 10 은 다 2의 배수라 쭉 2로 나눔b) 3 부터 소수들은 따로 나눔 ( 거듭제곱근까지)c) 그러고도 남은 수 ex) 13 은 소수 이므로 그냥 출력 1085번1. x,y 에 있고, (0,0) ~ (w,h) 이므로2. 왼쪽 경계선 거리 : x3. 아래쪽 경계선..

C언어/백준 2024.11.20

7.5 sizeof , 8. array

sizeof : 단항연산자sizeof i + j >> ( sizeof i ) + j > size_t 로 implementation-defined size_t : unsigned integer type %lu , (unsigned long) sizeof() C99 trick %z(u) , sizeof()   subscripting or indexing배열 요소 안에 접근하고자 [ ] 안에 값을 쓰는것 배열의 범위를 벗어나면,,int a[10], i; for (i = 1; i 10; i++){      a[i] = 0;  } :  a[10] 은 a[9] 의 다음 주소로 넘어감 만약 i 가 다음 주소라면 i=0 이되어 무한루프를 돎 for문 1번조건 > 2번조건 > 3번조건>2번조건>3번조건,,, 두번 참조 ..

C언어/C - knk 2024.11.20

2869번, 5086번, 2501번, 9506번, 1978번

2869A : up, B : down , V : 목표1. 정상에 올라간 즉, 마지막날은 미끄러지지 않음  : V - B  // 마지막 미끄러지는 거리를 빼면 > 총거리 2. 걸린 일수 : 총거리 / 하루에 가는거리   : (V-B) / (A-B)3. if( (V - B) % (A - B) != 0 ) { days ++; } 나머지가 0 이아니면 하루를 더 더해줘야함 5086A, B (첫째, 둘째) 1.   B % A == 0  : factor2.   A % B == 0  :multiple 2501for문, n k 로 받음 1. 약수 :  A % i  == 0  > count++ 2. count == k > printf( "%d" ,i ), return 0; 9506번약수 : n/2 보다 클 수 없음 ex..

C언어/백준 2024.11.19

1193번

1. 대각선의 개수는 분수의 개수랑 같음2.  그때까지 대각선을 1부터 빼주고 대각선 ++ 1. 홀수 대각선 : 분자 감소, 분모 증가2. 짝수 대각선 : 분자 증가, 분모 감소#include void find_fraction(int X) { int diagonal = 1; // X가 속한 대각선 번호를 찾기 while (X > diagonal) { X -= diagonal; diagonal++; } // 대각선 번호에 따라 분수 계산 int numerator, denominator; if (diagonal % 2 == 0) { // 짝수 대각선: 아래에서 위로 numerator = X; d..

C언어/백준 2024.11.16

4장

C의 특징:  명령문 보다는 표현식 ( 수식) 에 중점을 둠 변수 : 프로그램 실행될 때 계산될 값상수 : 변하지 않는 값 산술연산자% 빼고는 혼합가능 1. int float 혼합 : foat2. 둘다 정수일때 / 를 하면 소수는 버림3. % : 둘다 정수여야함4.(c99) 나눗셈 ' / ' 의 결과는 0을 향해 버려짐  5. i % j의 값은 i와 같은 부호를 가짐 (첫번째 변수의 부호)  implementation-definedc standarad 는 의도적으로 일부분을 명시안한채로 둠 > sw 가 채움> 구현마다 프로그램동작이 달라짐언어의 목표는 효율성 = 하드웨어 동작과 일치해야함의존x + 정의된 구현은 문서화 되어야함, > 하드웨어 동작과의 일치를 통한 효율성을 끌어올리기 위해 일부분을 구현하지..

C언어/C - knk 2024.11.16

printf, scanf

printf문자열과 문자열에 지정된 값 을 출력하도록 설계 >> 그래서  " " (큰 따음표)로 묶어준거였음 char h[] = "hello";printf(h);printf (문자열, 표현식₁, 표현식₂, ...) ;  변환지정자 % : 값을 내부 형식(이진수)에서 출력 형식(문자)으로 변환하는 방법을 지정ex) %d : 2진수를 10진수 문자열로 바꿔라  일반형 : %m.pX or %-m.pX( m,p 정수  ,X : 문자)// p 생략시 마침표도 사라짐 // m : 문자가 출력될 최소한의 수출력할 값이m보다 적다면 > 오른쪽 정렬 ( 공백이 들어감)// -m : 왼쪽정렬 %fex) %10.2f  %4d, 123 > 공백123%4d, 12345 > 12345 // m: 최소한의 수!%-4d, 123 :..

C언어/C - knk 2024.11.15