C언어/백준 14

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

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

2738번, 2566번, 2563번, 2745번

2738 이차원 배열은 행 우선arr[3][4] : arr[0][0], arr[0][1], arr[0][2], arr[0][3], arr[1][0], arr[1][1], arr[1][2], arr[1][3]. arr[i][j] == *(arr[i] + j) arr[2][3]== *(arr[2] + 3)arr[2] == arr[2][0] 2566최대값을 찾으면 , i 와 j 배열 하나씩 더해주기 // 1행부터 시작이므로이차원 배열로 선언 > 일차원 for문으로 입력받으면..words[5][16] , for > words[i] : (입력) abcde   words[0][0] = 'a', words[0][1] = 'b', words[0][2] = 'c' ,, 이렇게 저장됨 주의)) col strlen(word..

C언어/백준 2024.11.14

25206번

조건 : 전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다a. 아는값 : 학점, 모르는값 : 과목평점b. 과목평점은 등급으로 구할 수 있음 > strcmp    1. 과목 학점 등급 > for문으로 각각 받음2. strcmp(같으면 0 , 사전식 앞뒤 +,-) : 등급이 a+, a,, 이면 평점4.5, 4.0 리턴// 함수선언 double 3. 토탈 점수 += 학점 * 평점4. 토탈 학점 > 나눔 // return 0.0; P or F 과목 #include #include double get_grade_point(char grade[]) { if (strcmp(grade, "A+") == 0) return 4.5; if (strcmp(grade, "A0") == 0..

C언어/백준 2024.11.13

2941번 , 1316번

2941번1.한 문자씩 비교해서 맞는지 확인2. count ++3. if) 두글자, 세글자 이면 그게 한글자로 되므로       배열 i 를 ++, i= i+2 // i+=2 해주기 13161. 알파벳 배열과 이전 배열을 0으로 초기화2. 입력 문자가 이전 문자와 같지 않고 +3. 이미 나온 문자면 함수 종료 (return 0;) 4. 아니라면 알파벳 배열에 1로 초기화하고5. 이전문자가 아니면 현재 문자 저장 // char prev_char = '\0'; // == 0 배열 초기화방법// for 문안에 scanf 랑 그룹배열인지 확인하는 함수를 같이 둔다면 한 단어씩 끊을 수 있음// scanf : 입력할때마다 이전 단어가 아닌 새로운 단어로 덮어쓰여짐// alphabet[word[i] - 'a']  ..

C언어/백준 2024.11.13