본문 바로가기
백준(C언어)/22년 7월

7월 15일(금) - 4단계(3052번)

by C0MPAS 2022. 7. 16.

4단계 - 3052번

 

3052번: 나머지

각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

www.acmicpc.net

 

문제점
1. 두 번의 for문을 모두 int i 로 시작하려다가 꼬임

-> 1) int i , 2) int k 로 설정
2. count 변수만을 사용해서 풀이하다보니 중간에 막힘

-> count 뿐만 아니라 difference까지 추가로 선언해야 깔끔하게 풀이가능
3. count 변수가 0으로 초기화되지 않고, difference 변수의 값도 생각한 범위 밖으로 값이 튀어버림

-> int k로 쓰는 for문 안에 int count=0; 넣어서 k를 이용한 반복문 실행마다 0으로 초기화해야

difference 또한 제대로 카운팅이 가능해짐

 

풀이

#include <stdio.h>

int main(void)
{
	int array[10];
	int count = 0;
	int difference = 0;

	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &array[i]);
		array[i] = array[i] % 42;
	}
	for (int k = 0; k < 10; k++)
	{
		int count = 0;
		for (int j = k+1; j < 10; j++)
		{
			if (array[k] == array[j])
			{
				++count;
			}
		}
		if (count == 0)
		{
			++difference;
		}
	}
	printf("%d", difference);
	return 0;
}

출처: https://www.acmicpc.net/problem/3052

댓글