int main(void)
{
int numArr[5];
int smallestNumber;
scanf("%d %d %d %d %d", &numArr[0], &numArr[1], &numArr[2], &numArr[3], &numArr[4]);
smallestNumber = numArr[0];
for (int i=0;i<sizeof(numArr)/sizeof(int);i++)
{
if (numArr[i] < smallestNumber)
numArr[i] = smallestNumber;
}
printf("%d\n", smallestNumber);
return 0;
}
이거는 안되는데
#include <stdio.h>
int main(void)
{
int numArr[5];
int smallestNumber;
scanf("%d %d %d %d %d", &numArr[0], &numArr[1], &numArr[2], &numArr[3], &numArr[4]);
smallestNumber = numArr[0];
for (int i = 0; i < 5; i++)
{
if (smallestNumber > numArr[i])
smallestNumber = numArr[i];
}
printf("%d\n", smallestNumber);
return 0;
}
왜 이거는 되는지에 대한 질문 드립니다. 감사합니다.
for (int i=0;i<sizeof(numArr)/sizeof(int);i++)
{
if (numArr[i] < smallestNumber)
numArr[i] = smallestNumber;
}
가장 작은 값을 찾아야 하는 문장입니다. 배열 안에 있는 값을 순차적으로 '가장 작은 값으로 설정한 변수'보다 작은지 확인합니다. 만약 이 조건이 참이라면, 그렇다면,
numArr[i] = smallestNumber; 이 문구를 반대로
smallestNumber = numArr[i]; 이렇게 해야 합니다. 이 문장의 의미는 기존의 가장 작은 값보다 더 작은 값을 찾았으니, 더 작은 값을 교체해준다는 것입니다 .방금 전에 비교했던 값을 새롭게 가장 작은 값으로 만들어 주기 위해서.