미로 크기의 2차원 배열을 만들고, 2중 for 문으로 각 요소의 값들을 입력받는다.

이후 무한 루프를 만들어 조건을 만족시키면 반복문을 탈출하는 구조로 코드를 구성하였다.

현재 좌표의 값이 2(먹이)면 현재 좌표를 9로 만들고 반복문을 종료한다.

이동할 위치가 0(이동가능)이면 9로 만들어 현재 위치를 이동하며, 이동할 위치가 1(벽)이면 오른쪽 또는 아래로 방향을 바꾼다. 방향을 바꿔도 이동할 위치가 1이면 반복문을 종료한다. 

위 작업을 수행하는 반복문에 주석을 달아 더 자세히 설명할 것이다. 

정답은 다음 코드와 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include  <stdio.h>
 
int main()
{
    int x = 2, y = 2;   // 초기 좌표값
    int miro[11][11= {};  // 미로 상자
    
    for(int i = 1; i <= 10; i++)    // 2차원 배열의 각 요소에 입력값을 받음
    {
        for(int j = 1; j <= 10; j++)
            scanf("%d"&miro[i][j]);
    }
    
    while(1)    // 무한루프
    {
        if(miro[x][y] == 2// 현재 좌표가 2면 
        {
            miro[x][y] = 9// 현재 좌표를 9로 만들고
            break;          // 반복문 종료
        }
        miro[x][y] = 9;     // 현재 좌표를 9로 만듬
        if(miro[x][y+1== 0)   // 아래쪽으로 이동 가능하면
            y += 1;             // y좌표값을 1 증가시킴
        else if(miro[x][y+1== 1)  // 아래 좌표가 벽이면
        {
            if(miro[x+1][y] == 1)   // 오른쪽도 벽이면
                break;              // 갈 곳이 없으므로 반복 종료
            else if(miro[x+1][y] == 2)  //오른쪽으로 이동한 좌표가 2(먹이)면
            {
                miro[x+1][y] = 9;   // 그 좌표를 9로 만들고
                break;              // 반복 종료
            }
            else    // 벽도 아니고 먹이도 아니면, 1칸 오른쪽으로 이동
                x += 1;
        }
        else if(miro[x][y+1== 2)   // 한 칸 아래 좌표가 2(먹이)면
        {
            miro[x][y+1= 9;       // 그 좌표애 9를 지정하고
            break;                  // 반복문 종료
        }
    }
    
    for(int  i = 1; i <= 10; i++)       // 위 반복문을 마친 후 미로 상자의 상태를 출력   
    {   
        for(int j = 1; j <= 10; j++)
            printf("%d ", miro[i][j]);
        printf("\n");
    }        
    return 0;
}
cs

 

바둑판을 표현하는 2차원 배열을 만들고, 흰 돌의 개수를 입력받는다. 

흰 돌의 개수만큼 반복하면서 흰 돌을 올릴 좌표를 입력 받고, 2차원 배열의 그 좌표를 1로 만든다.

2중 for문을 사용하여 흰 돌이 표현된 바둑판을 출력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
 
int main()
{
    int n, x, y;    // 입력 받을 변수, x좌표, y좌표
    int pan[20][20]={};    // 바둑판
    scanf("%d"&n);    // 흰돌 개수 입력
    
    for(int i = 1; i <= n; i++)    // 1부터 흰돌 개수 만큼 반복
        {
            scanf("%d %d"&x, &y);    // x좌표, y좌표 입력
            pan[x][y]=1;            // 입력 받은 좌표에 해당하는 요소를 1로 바꿈
        }
        
    for(int i = 1; i <= 19; i++)    // 2중 for문으로 2차원 배열 출력(세로줄 만큼 반복)
        {
            for(int j = 1; j <= 19; j++)    // 가로줄 만큼 반복
            {
                printf("%d ", pan[i][j]);     // 가로줄 출력
            }
            printf("\n");    // 줄바꿈
        }
    
    return 0;
}
cs

 

부른 번호를 하나 씩 배열에 저장하고, 저장한 배열을 역순으로 출력하면 된다.

먼저 10000 크기의 배열을 선언한다. 배열의 인덱스는 0부터 시작한다. 

부른 횟수를 입력받고, for 반복문으로 0부터 입력한 횟수보다 작을 때 까지 반복하면서 출석 번호를 배열의 각 요소에 입력받는다.

for 반복문으로 n보다 1 작은 수 에서 시작하여 0까지 반복하면서 배열의 각 인덱스를 출력하면 된다.

정답은 다음 코드와 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
 
int main()
{
    int n, a[10000];    // 입력 받을 횟수와 배열
    scanf("%d",&n);        // 횟수 입력
 
    for(int i = 0; i < n; i++)    // 0부터 입력한 횟수보다 작을 때 까지 반복
    {
        scanf("%d"&a[i]);        // 배열의 각 요소에 입력
    }
 
    for(int i= n - 1; i >= 0; i--)    // n-1 q부터 0까지 반복
    {
        printf("%d ", a[i]);        // n-1번 요소부터 역순으로 출력
    }
    return 0;
}
cs

 

+ Recent posts