반응형
#3052번 : 나머지
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int* a;
a = (int*)malloc(10 * sizeof(int));
if (a == NULL)
{
printf("메모리 할당 오류");
exit(1);
}
int i;
int k;
int count = 0;
int result = 0;
for (i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
a[i] = a[i] % 42;
}
for (i = 0; i < 10; i++)
{
count = 0;
for (k = 9; k >= i + 1; k--)
{
if (a[i] != a[k])
count++;
}
if (count == 10 - (i+1))
{
result++;
}
}
printf("%d", result);
free(a);
return 0;
}
|
cs |
1. 배열 a에 10개의 정수를 저장할 수 있는 동적 메모리를 할당하고 정수 scanf로 받은 후 42로 나눈 나머지를 다시 a[i]값에 저장함. 2. a[i]랑 그 뒤에 있는 변수들을 비교해서 나머지가 다른 경우에 count를 증가 시킴. 3. count가 10-(i+1)과 같다면 해당 변수가 고유한 나머지값이라는 의미가 되므로 result를 증가시킴 |
count를 for문에서 초기화하지 않았더니 계속 result가 1만 나왔었다.. 꼭 for문 안에서 count를 0으로 초기화를 시켜놓아야 마지막 if문이 정상적으로 연산이 된다. 그렇지 않으면 계속 누적되어서 count값이 늘어나므로.. if문의 실행 의미가 없어진다.
for (i = 0; i < 10; i++)
{
count = 0;
for (k = 9; k >= i + 1; k--)
{
if (a[i] == a[k])
count = 1;
}
if (count == 0)
{
result++;
}
}
|
cs |
count연산이 복잡하다면 이렇게 해도 될 것 같다.
count를 0으로 해놓고, 만약 같은 나머지가 존재한다면 1로 변경한 후 count가 0일 때만 result를 증가시키는 방식이다.
#10811번:바구니 뒤집기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int* basket;
basket = (int*)malloc(100 * sizeof(int));
if (basket == NULL)
{
printf("메모리 할당 오류");
exit(1);
}
int N, M, i, j;
int k, t;
int temp;
scanf("%d", &N);
for (k = 0; k < N; k++)
{
basket[k] = k + 1;
}
scanf("%d", &M);
for (k = 0; k < M; k++)
{
scanf("%d %d", &i, &j);
if (i == j)
{
continue;
}
{
for (t = 0; t < (j - i + 2) / 2; t++)
{
temp = basket[i - 1 + t];
basket[i - 1 + t] = basket[j - 1 - t];
basket[j - 1 - t] = temp;
}
}
}
for (k = 0; k < N; k++)
{
printf("%d ", basket[k]);
}
free(basket);
return 0;
}
|
cs |
.
반응형
'코딩해요 > C' 카테고리의 다른 글
[백준/C언어] 1차원 배열 1546번 : 평균 (0) | 2023.08.08 |
---|---|
[백준/C언어] 입출력과 사칙연산 문제풀이 (0) | 2023.08.01 |
[백준/C언어] 1차원 배열 문제풀이 (0) | 2023.07.24 |
[백준/C언어] 반복문 문제풀이 (0) | 2023.07.16 |
[백준/C언어] 조건문 문제풀이 (0) | 2023.07.11 |