본문 바로가기

카테고리 없음

C언어 7주차

#include <stdio.h>
#include <string.h>

int main() {
    char x[51];
    scanf("%s", x);  
    
    int len = strlen(x);
    int i = 0;
    char y[101] = "";  

    while (i < len) {
        if (x[i] == 'X') {
            int count = 0;
            
            while (i + count < len && x[i + count] == 'X') {
                count++;
            }

            if (count % 2 != 0) {
                printf("-1\n");
                return 0;
            }

     
            int A = count / 4;  
            int B= (count % 4) / 2; 

            for (int j = 0; j < A; j++) {
                strcat(y, "AAAA");
            }
            for (int j = 0; j < B; j++) {
                strcat(y, "BB");
            }

            i += count; 
        } else {
            
            strncat(y, &x[i], 1);
            i++;
        }
    }
    
    printf("%s\n", y);
    return 0;
}

1.x부분에 문자열을 입력받는다. 

2.X의 개수가 몇 개 인지 while문에서 .이 나올 때 까지 센다. 

2-1. .이 나올 때 까지 반복문을 센 뒤 홀수일 경우 폴리오미노가 불가능하므로 -1을 반환 뒤 프로그램을 종료한다. 

3. X가 몇개가 나온지에 따라 strcat으로 y에 바뀐 문자열을 붙인다. 

4.2부터 3까지의 과정을 문자열이 끝날 때 까지 반복한다.

5.출력한다. 

 

 

 

#include <stdio.h>

int main() {
    int X;
    scanf("%d", &X);  

    int count = 0;
    int first = 64;  

    while (X > 0) {
        if (first <= X) {
            X -= first;  
            count++;  
        }
        first /= 2; 
    }

    printf("%d\n", count);  
    return 0;
}

1.X에다가 만들고 싶은 막대기의 값을 입력받습니다. 

2.가지고 싶은 막대기 값을 현재 막대기의 길이에서 빼는 방식으로 합니다. 

2-1. 만약 48cm를 가지고 싶다고 가정할 경우 while문을 한 번 돕니다. 그럼 first의 값은 32가 됩니다.

2-2.X-=32는 16이 된 다음, first의 값 또한 16이 됩니다. 현재까지의 count(막대기가 부러진 횟수)는 1 입니다. 

2-3. X-16이 되면서 막대기가 만들어집니다. 이 때 count값은 2이며 막대기가 만들어졌기에 반복문이 끝납니다. 

3.위와 같이 실행한 횟수를 출력합니다.