백준 2739
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < 9; i++) {
printf("%d * %d = %d\n", n, i + 1, n * (i + 1));
}
return 0;
}
백준 10950
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int t;
scanf("%d", &t);
int** arr = malloc(sizeof(int*) * t);
for (int i = 0; i < t; i++) {
arr[i] = malloc(sizeof(int) * 2);
}
for (int i = 0; i < t; i++) {
scanf("%d %d", &arr[i][0], &arr[i][1]);
}
for (int i = 0; i < t; i++) {
printf("%d\n", arr[i][0] + arr[i][1]);
}
for (int i = 0; i < 2; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
테스트 케이스의 개수가 가변적이기 때문에 나는 2차원배열에 메모리를 동적할당하여 테스트 케이스를 저장했다.
- 자료형 **포인터이름 = malloc(sizeof(자료형 *) * 세로크기);와 같이 세로 공간 메모리 할당
- 반복문으로 반복하면서 포인터[i] = malloc(sizeof(자료형) * 가로크기);와 같이 가로 공간 메모리 할당
- 반복문으로 반복하면서 free(포인터[i]);와 같이 가로 공간 메모리 해제
- free(포인터);와 같이 세로 공간 메모리 해제
이런 식으로 사용하면 된다.
<출처: https://dojang.io/mod/page/view.php?id=319 >
백준 8393
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int sum = 0;
for (int i = 0; i < n; i++) {
sum += i + 1;
}
printf("%d", sum);
return 0;
}
백준 15552
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int t;
scanf("%d", &t);
int** arr = malloc(sizeof(int*) * t);
for (int i = 0; i < t; i++) {
arr[i] = malloc(sizeof(int) * 2);
}
for (int i = 0; i < t; i++) {
scanf("%d %d", &arr[i][0], &arr[i][1]);
}
for (int i = 0; i < t; i++) {
printf("%d\n", arr[i][0] + arr[i][1]);
}
for (int i = 0; i < 2; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
백준 2741
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("%d\n", i + 1);
}
return 0;
}
백준 2742
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
for (int i = n; i > 0; i--) {
printf("%d\n", i);
}
return 0;
}
백준 11021
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int t;
scanf("%d", &t);
int** arr = malloc(sizeof(int*) * t);
for (int i = 0; i < t; i++) {
arr[i] = malloc(sizeof(int) * 2);
}
for (int i = 0; i < t; i++) {
scanf("%d %d", &arr[i][0], &arr[i][1]);
}
for (int i = 0; i < t; i++) {
printf("Case #%d: %d\n", i + 1, arr[i][0] + arr[i][1]);
}
for (int i = 0; i < t; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
백준 11022
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int t;
scanf("%d", &t);
int** arr = malloc(sizeof(int*) * t);
for (int i = 0; i < t; i++) {
arr[i] = malloc(sizeof(int) * 2);
}
for (int i = 0; i < t; i++) {
scanf("%d %d", &arr[i][0], &arr[i][1]);
}
for (int i = 0; i < t; i++) {
printf("Case #%d: %d + %d = %d\n", i + 1, arr[i][0], arr[i][1], arr[i][0] + arr[i][1]);
}
for (int i = 0; i < t; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
백준 2438
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < i + 1; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
백준 2439
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = n - (i + 1); j > 0; j--) {
printf(" ");
}
for (int j = 0; j < i + 1; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
백준 10871
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, x;
scanf("%d %d", &n, &x);
int* arr = malloc(sizeof(int) * n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
for (int i = 0; i < n; i++) {
if (arr[i] < x) {
printf("%d ", arr[i]);
}
}
return 0;
}
백준 10952
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b;
int arr[100] = { 0, };
int cnt1 = 0;
int cnt2 = 0;
while (1) {
scanf("%d %d", &a, &b);
if (a == 0 && b == 0) {
break;
}
arr[cnt1] = a + b;
cnt1++;
}
while (1) {
if (arr[cnt2] == 0) {
break;
}
printf("%d\n", arr[cnt2]);
cnt2++;
}
return 0;
}
처음엔 입력 후 한꺼번에 출력해야하는줄 알고 위의 코드로 제출했는데 굳이 한꺼번에 출력하지 않고 한 테스트케이스마다 출력해도 가능한 것 같다. 아래의 코드는 테스트케이스마다 출력하는 코드이다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b;
while (1) {
scanf("%d %d", &a, &b);
if (a == 0 && b == 0) {
break;
}
printf("%d\n", a + b);
}
return 0;
}
백준 10951
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int a, b;
while (scanf("%d %d",&a,&b)!=EOF) {
printf("%d\n", a + b);
}
return 0;
}
처음에는 조건이 부실하다고 생각하고 그냥 while(1)로 돌렸더니 출력초과 결과가 떴다. 그래서 이 문제를 구글링해봤더니 EOF를 사용해야 한다고 했다. 그래서 EOF에 대해 찾아봤다.
EOF란 End of File의 줄임말이다. c언어에서는 파일의 끝에 도달했을 때 언제나 특별한 값을 반환하도록 한다. 그 값을 EOF라고 하고, 이 값은 -1이다.
<출처: http://www.tcpschool.com/c/c_string_io >
scanf는 입력에 성공한 값을 리턴하기 때문에 이 값이 입력이 끝나는 EOF, 즉 -1이 아닐 때까지 반복하라는 while(scanf("%d %d", &a, &b)!=EOF) 코드로 고쳐서 제출했더니 성공했다.
백준 1110
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int copy = n;
int x, y;
int cnt = 0;
do{
x = n % 10;
y = (n / 10) + x;
n = (10 * x) + (y % 10);
cnt++;
} while (n != copy);
printf("%d", cnt);
return 0;
}
'C' 카테고리의 다른 글
[C]백준 07.문자열(11654, 11720, 10809, 2675, 1157, 1152, 2908, 5622, 2941, 1316) (0) | 2022.01.09 |
---|---|
[C]백준 06.함수(15596, 4673, 1065) (0) | 2022.01.09 |
[C]백준 05.1차원배열(10818, 2562, 2577, 3052, 1546, 8958, 4344) (0) | 2022.01.08 |
[C]백준 01.입출력과 사칙연산, 02.if문(2577, 10718, 10171, 10172, 1000, 1001, 10998, 1008, 10869, 10430, 2588/1330, 9498, 2753, 14681, 2884) (0) | 2022.01.05 |
코드업(CodeUp) 1099번 (0) | 2021.06.27 |