알고리즘/백준

[백준]소가 길을 건너간 이유 1-14467 | C

kms0204 2022. 4. 16. 20:15
#include <stdio.h>
int main() {
	int n,arr[101],temp1,temp2,cnt=0;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
		arr[i] = -1;
	for (int i = 0; i < n; i++) {
		scanf("%d %d", &temp1, &temp2);
		if (arr[temp1]!=-1 && arr[temp1]!=temp2)
			cnt++;
		arr[temp1] = temp2;
	}
	printf("%d", cnt);
	return 0;
}

1~10번까지의 소 번호와 소가 강을 기준으로 오른쪽인지 왼쪽인지를 나타내는 1, 0을 n번만큼 입력받고, 
소가 총 몇 번 강을 건넜는지 구하는 문제이다.
n은 100 이하의 정수이다.
 

먼저 n을 입력받는다.

배열 arr의 1부터 n까지를 -1로 초기화한다. (소의 위치가 0, 1로 주어지기 때문에 0으로 초기화할 수 없어서)

for 문을 이용하여 소의 번호와 위치를 입력받는다.
그리고 소의 위치에 해당하는 값을 인덱스로 하는 배열 요소(element)가 -1이 아니고(처음 입력받는 것이 아니고),
기존의 위치와 다른 위치를 입력받았다면, 소가 강을 건넌 횟수(cnt)를 1만큼 증가시키고,
소의 위치를 입력받은 위치로 바꾼다.

마지막으로 cnt(소가 강을 건넌 횟수)를 출력한다.