1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
int main() {
 
    int num = 1;
 
    for (int i = 1; i <= 10; i++) {
        for (int j = i; j > 1; j--) {
            num *= j;
        }
        cout << i << "! = " << num << endl;
        num = 1;
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
using namespace std;
 
int main() {
 
    int num = 0;
 
    for (int i = 65; i <= 90; i++) {
        cout << (char)i << "    ";
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
int main() {
 
    int num=0;
 
    for (int i = 1; i <= 100; i++) {
        if (i % 2 == 0)
            num += i;
    }
 
    cout << "1부터 100사이의 짝수의 합: " << num << endl;
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int main() {
 
    int input1, input2;
 
    while (1) {
        std::cout << "입력: ";
        std::cin >> input1, std::cin >> input2;
        (input1 > input2) ? std::cout << input1 << "이 더 큼" << std::endl : std::cout << input2 << "이 더 큼" << std::endl;
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
int main() {
    int input;
    while (1) {
        std::cout << "입력: ";
        std::cin >> input;
        if (input == 0)
            std::cout << "입력값은 0" << std::endl;
        else if (input > 0)
            std::cout << "입력값은 양수" << std::endl;
        else if (input < 0)
            std::cout << "입력값은 음수" << std::endl;
    }
}
cs
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
#include <iostream>
 
#include <conio.h>
 
#define LEFT 75
 
#define RIGHT 77
 
#define UP 72
 
#define DOWN 80
 
#define ESC 27
 
using namespace std;
 
 
 
void initializeArray(int **arr, int n); // 동적 2차원 배열 초기화
 
void mixArray(int** arr, int n, int& zero_i, int& zero_j); // 2차원 배열 섞기
 
void moveZero(int** arr, int& zero_i, int& zero_j, int n); // 0 옮기기
 
 
 
void main(){
 
    int **arr, n, temp, zero_i,zero_j; // 2차원 포인터 arr, temp, 0위치 저장 zero_i,j ,key값 저장용 
 
    cout<<"배열 크기 입력: (n*n)"
 
    cin>>n; // n by n 배열값 입력
 
 
 
    arr = (int**calloc ( sizeof(int*) , n ); // 행 생성
 
 
 
    initializeArray(arr, n); // 2차원 배열 만들기 위한 열 생성 함수
 
 
 
    cout<<"\n변경 전\n"// 섞기 전 배열 출력
 
    for(int i=0; i<n; ++i){
 
        for(int j=0; j<n; ++j) printf("%d ", arr[i][j]);
 
        printf("\n");
 
    }
 
    cout<<"\n변경 후\n";
 
    mixArray(arr,n,zero_i,zero_j); // 섞기 함수
 
 
 
    for(int i=0; i<n; i++){ // 섞은 배열 출력
 
        for(int j=0; j<n; j++printf("%d ", arr[i][j]);
 
        printf("\n");
 
    }
 
 
 
    while(1){
 
        moveZero(arr, zero_i, zero_j, n); // 배열, 0위치, 배열길이 전달 후 게임 시작
 
        for(int i=0; i<n; i++){
 
            for(int j=0; j<n; j++
 
                printf("%d ", arr[i][j]); // 출력
 
            printf("\n");
 
        }
 
    }
 
}
 
 
 
void initializeArray(int **arr, int n){ // 배열 선언 & 초기화 함수
 
    for(int i=0, a=0; i<n; i++, a++) { // 
 
        arr[i] = (int*malloc ( sizeof(int* n ); // 2차원 배열 위한 열 생성
 
        for(int j=0; j<n; ++j, a++){ // 초기화
 
            arr[i][j] = a; // a를 인덱스로 초기화
 
        }
 
    }
 
}
 
 
 
void mixArray(int** arr, int n, int& zero_i, int& zero_j){ // 배열 섞기 함수
 
    int temp;
 
    for (int i=0; i<n; i++)
 
        for(int j=0; j<n; j++){ 
 
            int rnd1 = rand() % n; // 0~n-1 까지 난수 발생 후 초기화
 
            int rnd2 = rand() % n; 
 
            temp = arr[rnd1][rnd2]; // temp에 저장 후
 
            arr[rnd1][rnd2] = arr[rnd2][rnd1]; // 행 열 바꿔준걸로 초기화 후
 
            arr[rnd2][rnd1] = temp; // temp값을 초기화 해줌
 
            if(arr[i][j] == 0) { // 0이라면 제로값 좌표 초기화
 
                zero_i=i;
 
                zero_j=j;
 
            }
 
        }
 
}
 
 
 
void moveZero(int** arr, int& zero_i, int& zero_j, int n){ // 0위치 변경 함수
 
    int key[2], temp; // 키값 입력용, temp 변수 선언
 
    key[0]=getch();
 
    key[1]=getch(); // 키값 받아오고
 
    system("cls");
 
    switch(key[1]) {
 
    case LEFT: 
 
        if (zero_j == 0) { // 왼쪽으로 가다가 벽을 만난다면 (j가 0 이라면)
 
            temp = arr[zero_i][zero_j]; // 임시저장 후
 
            arr[zero_i][zero_j] = arr[zero_i][n-1]; // n-1 즉 j를 오른쪽 끝 벽 값을 초기화 하고
 
            arr[zero_i][n-1= temp; // 끝벽에 임시값 초기화
 
            zero_j=(n-1); // 그리고 j값을 끝벽값으로 초기화
 
            break// 탈출
 
        }
 
        temp = arr[zero_i][zero_j]; // 왼쪽으로 이동 위한 현재값 임시 저장
 
        arr[zero_i][zero_j] = arr[zero_i][zero_j-1]; // 현재값과 왼쪽값 변경
 
        arr[zero_i][zero_j-1= temp; // 왼쪽값에 현재값 저장
 
        zero_j--// 행 위치 하락
 
        break;
 
 
 
    case RIGHT:
 
        if (zero_j == n-1) { // 만약 오른쪽 끝벽을 만났다면
 
            temp = arr[zero_i][zero_j]; // 임시저장 후
 
            arr[zero_i][zero_j] = arr[zero_i][0]; // 가장 왼쪽 벽 값을 초기화 하고
 
            arr[zero_i][0= temp; // 왼쪽벽 값은 오른쪽 끝벽 값으로 초기화
 
            zero_j=0// j값 오른쪽 끝 벽으로 초기화
 
            break;
 
        }
 
        temp = arr[zero_i][zero_j]; // 현재 값 임시저장
 
        arr[zero_i][zero_j] = arr[zero_i][zero_j+1]; // 오른쪽 값을 초기화 하고
 
        arr[zero_i][zero_j+1= temp; // 오른쪽 값에 다시 임시 저장값 초기화
 
        zero_j++// j값 상승
 
        break;
 
 
 
    case DOWN:
 
        if (zero_i == n-1) { // 만약 열 좌표 값이 넘어갈 수 없는 최대치 라면
 
            temp = arr[zero_i][zero_j]; // 임시저장 후
 
            arr[zero_i][zero_j] = arr[0][zero_j]; // 열이 0인 행렬과 값 스위치
 
            arr[0][zero_j] = temp; // 0 행렬은 끝벽값 초기화
 
            zero_i=0// i값 초기화
 
            break;
 
        }
 
        temp = arr[zero_i][zero_j]; // 임시저장 후
 
        arr[zero_i][zero_j] = arr[zero_i+1][zero_j]; // 아래 행렬과 값 스위치
 
        arr[zero_i+1][zero_j] = temp; // 아래 행렬에 현재 값이었던 임시저장값 초기화
 
        zero_i+=1// 열값 상승
 
        break;
 
 
 
    case UP:
 
        if (zero_i == 0) { // 만약 위로 넘어갈 수 없다면
 
            temp = arr[zero_i][zero_j]; // 현재 값 임시 저장 후
 
            arr[zero_i][zero_j] = arr[n-1][zero_j]; // i가 n-1인 아래 끝 벽의 행렬값과 스위칭 후
 
            arr[n-1][zero_j] = temp; // 끝벽 행렬값을 임시저장값으로 초기화
 
            zero_i=n-1// 열값 갱신
 
            break;
 
        }
 
        temp = arr[zero_i][zero_j]; // 현재 값 임시 저장 후
 
        arr[zero_i][zero_j] = arr[zero_i-1][zero_j]; // 위 행렬값과 스위칭
 
        arr[zero_i-1][zero_j] = temp; // 위 행렬값엔 임시저장값 초기화
 
        zero_i-=1// 열값 갱신
 
        break;
 
    }
 
}
cs


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
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
 
using namespace std;
 
int insertlist(int list[], int n, int *length, int i, int x); // i번째 위치에 원소 x를 추가함
int deletelist(int list[], int n, int *length, int i); // i번째 원소 삭제
void printflist(int* list, int* length); // 출력 함수
 
int main() {
    int a[50], lena = 0;
    int b[30], lenb = 0, temp;
 
    insertlist(a, 50, &lena, 010); //a 리스트에 0번째열에 10을 초기화
    insertlist(a, 50, &lena, 115); //a 리스트에 1번째열에 15을 초기화
    insertlist(b, 30, &lenb, 020); //b 리스트에 0번째열에 20을 초기화
    insertlist(a, 50, &lena, 225); //a 리스트에 2번째열에 25을 초기화
    insertlist(a, 50, &lena, 330); //a 리스트에 3번째열에 30을 초기화
    insertlist(b, 30, &lenb, 135); //b 리스트에 1번째열에 35을 초기화
    insertlist(b, 30, &lenb, 240); //b 리스트에 2번째열에 40을 초기화
    insertlist(a, 50, &lena, 445); //a 리스트에 4번째열에 45을 초기화
    insertlist(b, 30, &lenb, 350); //b 리스트에 3번째열에 50을 초기화
    deletelist(b, 30, &lenb, 1); // b리스트의 1번째 배열 삭제
    deletelist(b, 30, &lenb, 1); // b리스트의 1번째 배열 삭제 (책이 잘못됐는지 똑같은게 두줄이 있습니다..)
    insertlist(b, 30, &lenb, 455); //b 리스트에 4번째열에 55을 초기화
    deletelist(a, 50, &lena, 3); // a리스트의 3번째 배열 삭제 
    deletelist(a, 50, &lena, 4); // b리스트의 4번째 배열 삭제
    insertlist(a, 50, &lena, 460); //a 리스트에 4번째열에 60을 초기화
    insertlist(a, 50, &lena, 570); //a 리스트에 5번째열에 70을 초기화
 
    printflist(a, &lena); // a리스트 출력
    printflist(b, &lenb); // b리스트 출력
}
 
int insertlist(int list[], int n, int * length, int i, int x)
{
    int j;
    if (i<0 || i>*length + 1return 0// 저장할 배열번호가 0보다 작거나 남은 길이와 맞지 않다면 함수 종료
    if (*length + 1 == n) return 0// 늘어나는길이 length가 n(50) 이라면 함수 종료 (저장공간 x)
    for (j = *length; j >= i; j--) list[j + 1= list[j]; // 다음 번호로 밀어내어 저장
    list[i] = x; // i번열에 x저장
    *length = *length + 1// 남은 길이 계산
    return 1;
}
 
int deletelist(int list[], int n, int *length, int i)
{
    int temp, j;
    if (i<0 || (i>*length)) return -1;
    temp = list[i];
    for (j = i + 1; j <= *length; j++) list[j - 1= list[j];
    *length = *length - 1;
    return (temp);
}
 
void printflist(int * list, int * length)
{
    for (int i = 0; i < *length; i++// 길이에 맞춰 출력
        cout << *(list + i) << " "; // 포인터 list로 배열 참조하여 출력
    cout << "\n";
}
 
 
cs



10 이하의 소수를 모두 더하면 2 + 3 + 5 + 7 = 17 이 됩니다.

이백만(2,000,000) 이하 소수의 합은 얼마입니까?





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main() {
    int i, count, result = 0;
 
    for (i = 2; i <= 2000000; i++) {
        count = 0;
        for (int j = 1; j <= i; j++)
            if (i%j == 0)
                count++;
        if (count == 2)
            result += i;
    }
    cout << result << endl;
}
cs


+ Recent posts