반응형

 

<코드>

#include<stdio.h>

int set[20];

int check(int arr[], int n)
{
	int count = 0;

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			if (i == j) continue;
			else
				if (arr[i] * 2 == arr[j]) count++;
		}
	}
	return count;
}
int main(void)
{
	while (set[0] != -1)
	{
		for (int i = 0; i < 16; i++) 
		{
			scanf("%d", &set[i]);
			if (set[0] == -1) break;
			if (set[i] == 0)
			{
				printf("%d\n", check(set, i));
				break;
			}
		}

	}
}

 

예전에 파이썬으로 풀었던 문제였는데 2~15개의 서로다른 자연수들이 주어진다고 하여 밑에 캡처와 같이 i < 15로 설정하였으나 리스트의 마지막 자리에 "0"을 받는다는 사실을 간과하여 자꾸 틀렸네요 하하...

 

<좀 더 간단한 코드>

#include<stdio.h>
int n, i;
int main()
{
	for(;;)
	{
		int d[101] = { 0 };
		for (n = 1; n > 0; d[n]++)
		{
			scanf("%d", &n);
			if (n < 0)break;
		}
		if (n < 0)break; // 추가

		for (n = 0, i = 1; i < 51; i++)
			if (d[i]) n += d[i * 2];
			printf("%d ", n);
	}
}

 

 

 

파이썬으로 구현하면 정말 간단한 것 같습니다

<파이썬 코드>

while True:
    cnt = 0
    arr = list(map(float, input().split()))
    if arr[0] == -1:
        break
    for i in range(0, len(arr)-1):
        if arr[i]/2 in arr:
            cnt += 1
    print(cnt)

 

반응형

+ Recent posts