1부터 1000까지의 수 중에서 0과 5로만 이루어진 수를 찾아 리스트에 넣고 출력한다.
코드1
using System.Collections.Generic;
using UnityEngine;
public class Day2 : MonoBehaviour
{
void Start()
{
List<int> result = new List<int>();
for (int i = 1; i <= 1000; i++)
{
int n1 = i % 10;
if (n1 == 0 || n1 == 5)
{
int n10 = (i / 10) % 10;
if (n10 == 0 || n10 == 5)
{
int n100 = (i / 100) % 10;
{
if (n100 == 0 || n100 == 5)
{
if (i != 1000)
{
result.Add(i);
}
}
}
}
}
foreach (int n in result)
{
Debug.Log(n);
}
}
}
}
코드2
List<int> result = new List<int>();
for (int i = 1; i <= 1000; i++)
{
int n = i;
bool isFiverOrZero = true;
while(n > 0)
{
if(n % 5 !=0)
{
isFiverOrZero &= false;
break;
}
n /= 10;
}
if(isFiverOrZero)
{
result.Add(i);
}
}
foreach (int n in result)
{
Debug.Log(n);
}
풀이1
int형 리스트 result를 생성해주고, 1000까지 for문을 돌려준다.
첫번째 자리(1의 자리), 두번째 자리(10의 자리), 세번째 자리(100의 자리) 숫자들을 일일이 비교해준다.
1의 자리가 0이거나 5일때, 10의 자리가 0이거나 5일때, ,,,, 100의 자리까지 비교해준 후, 조건문이 맞으면 result 리스트에 하나씩 넣어준다.
풀이2
똑같이 리스트를 만들어주고, n이라는 변수를 만들어 i값을 복사해준다. isFiverOrZero 라는 bool값의 변수를 만들어서 현재 숫자가 5또는 0으로 구성되어있는지 확인해준다. 처음 시작 숫자는 0이기 때문에 true로 시작한다.
5로 나눴을때 나머지가 0이 아니면 5또는 0으로만 구성되어있는게 아니니 false로 저장한 값을 변수에 넣어준다.
한자리씩 줄여가며 비교하고, 5또는 0으로만 구성되어있다면 result리스트에 추가해준 후, 그 결과값을 출력해준다.