ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SISS/C언어 스터디] 2학기 1주차 스터디
    24-2 SISS/C언어 2024. 9. 8. 23:35

    2학기 1주차 스터디
    백준 제출 내역 화면 캡쳐

    자율 2문제를 풀어서 제출하면 됩니다.

    언어는 C언어만 가능합니다.

    ​레벨 제한사항: Silver 5 이상

     

    10845


    • 자료 구조 (큐) → 큐의 기본 내용 실습하기
    // 10845.c
    
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        // 명령 수(n), 큐, 큐의 앞 뒤 인덱스
        int n;
        int queue[10000];
        int front = 0;
        int back = 0;
    
        // 명령 수 입력
        scanf("%d", &n);
    
        // n번 동안
        for (int i = 0; i < n; i++)
        {
            // 명령어 입력받을 배열
            char command[6];
            // 수 저장할 변수
            int num;
    
            // 명령어 입력받기
            scanf("%s", command);
    
            // push일 경우
            if (strcmp(command, "push") == 0)
            {
                scanf("%d", &num);
                queue[back++] = num;
            }
    
            // pop일 경우
            else if (strcmp(command, "pop") == 0)
            {
                // 큐가 비어있을 때 (이하 동일)
                if (front == back)
                {
                    printf("-1\n");
                }
                else
                {
                    printf("%d\n", queue[front++]);
                }
            }
    
            // size일 경우
            else if (strcmp(command, "size") == 0)
            {
                printf("%d\n", back - front);
            }
    
            // empty일 경우
            else if (strcmp(command, "empty") == 0)
            {
                if (front == back)
                {
                    printf("1\n");
                }
                else
                {
                    printf("0\n");
                }
            }
    
            // front일 경우
            else if (strcmp(command, "front") == 0)
            {
                if (front == back)
                {
                    printf("-1\n");
                }
                else
                {
                    printf("%d\n", queue[front]);
                }
            }
    
            // back일 경우
            else if (strcmp(command, "back") == 0)
            {
                if (front == back)
                {
                    printf("-1\n");
                }
                else
                {
                    printf("%d\n", queue[back - 1]);
                }
            }
        }
    
        return 0;
    }

     

    15649


    • 백트래킹 → N까지의 자연수 중 중복 없이 M개를 고를 수열 찾기
    // 15649.c
    
    #include <stdio.h>
    
    // 자연수의 개수(n), 수열의 길이(m)
    int n, m;
    
    // 수열의 길이 m이 8보다 작으므로
    // 선택한 수
    int arr[9];
    // 사용 확인
    int visited[9];
    
    void dfs(int cnt)
    {
        // 선택한 수가 m개이면 출력
        if (cnt == m)
        {
            for (int i = 0; i < m; i++)
            {
                printf("%d ", arr[i]);
            }
    
            printf("\n");
    
            return;
        }
    
        for (int i = 1; i <= n; i++)
        {
            // 선택되지 않은 수일 경우 방문 표시하고 저장
            if (!visited[i])
            {
                visited[i] = 1;
                arr[cnt] = i;
    
                // 다음 숫자 선택하는 재귀 코드
                dfs(cnt + 1);
                // i 재선택을 위한 초기화
                visited[i] = 0;
            }
        }
    }
    
    int main()
    {
        // n, m 입력 받기
        scanf("%d %d", &n, &m);
    
        // dfs 실행
        dfs(0);
    
        return 0;
    }
Designed by Tistory.