코딩일지(2024-01-07)
[백준] 10810번 공 넣기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
typedef enum
{
EXIT, //0
HOLD_OFF //1
}STATE;
STATE main(void)
{
int n, m;
int basket[101] = { 0, };
int a, b, c;
printf("input> \n");
scanf("%d %d", &n, &m);
for (int i = 0; i < m; i++)
{
scanf("%d %d %d", &a, &b, &c);
for (int k = a; k <= b; k++)
{
basket[k] = c;
}
}
printf("output>\n");
for (int i = 1; i <= n; i++)
{
printf("%d ", basket[i]);
}
return EXIT;
}
input>
5 4
1 2 3
3 4 4
1 4 1
2 2 2
output>
1 2 1 1 0
코드리뷰: 코드의 입출력 순서는 다음과 같다.
1) 바구니 개수 N과 반복 횟수 M을 입력받습니다. 2) baseket이라는 list를 선언하고 값을 모두 0으로 초기화합니다.(공이 없는 바구니는 0을 출력해야 하므로) 3) M번 동안, 각각 i,j,k를 입력 받은 뒤 list의 값을 갱신하기 위해 for loop를 추가적으로 실행합니다. 4) 이떄, j 바구니 “까지” 값이 갱신되어야 하므로 반복문의 range는 (i,j+1)로 해줍니다. 5) 또한, 문제의 정의에 의해 바구니는 ‘1번’부터 존재하지만 list의 index는 ‘0번’부터 존재하므로 list의 값을 갱신할 때는 index에 -1을 빼서 업데이트 해줍니다.
[백준] 10813번 공 넣기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int n, m;
int i, j;
int k;
int arr[101] = { 0, };
printf("input> \n");
scanf("%d %d", &n, &m);
for (k = 1; k <= n; k++)
{
arr[k] = k;
}
for (k = 0; k < m; k++)
{
scanf("%d %d", &i, &j);
int temp = 0;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
printf("output> \n");
for (k = 1; k <= n; k++)
{
printf("%d ", arr[k]);
}
return 0;
}
input> 5 4 1 2 3 4 1 4 2 2 output> 3 1 4 2 5
코드리뷰: i,j의 공을 바꿀때 temp와 같은 변수를 설정해서 바꿔주었다.
[백준] 5597번 과제 안 내신 분..?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int student[31] = { 0, };
int presentNum;
printf("input>\n");
for (int i = 0; i < 28; i++)
{
scanf("%d", &presentNum);
student[presentNum] = presentNum;
}
printf("output>\n");
for (int i = 1; i < 31; i++)
{
if (student[i] == 0)
{
printf("%d\n", i);
}
}
return 0;
}
input> 3 1 4 5 7 9 6 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 output> 2 8
댓글남기기