문제
해결 방안 고민
•
소의 위치를 n번 관찰
•
소의 번호와 소의 위치 (3, 1) - (소의 번호, 소의 위치)
•
소 10마리를 가지고 있다 ⇒ 1 ~ 10 이하의 정수
•
소의 위치 - 왼쪽 (0), 오른쪽 (1)
해결 방법
•
원래 위치가 정해져 있지 않아 첫번째로 받는 위치는 이동한 횟수에 저장하지 않기 위해 배열을 -1로 채운다.
•
만약 위치가 -1인 경우 첫번째 이동이므로 카운트하지 않는다.
•
-1이 아닌 경우 현재 위치와 입력받은 위치를 비교하여 현재 위치를 넣어주고 카운트를 증가시켜준다.
코드
import java.util.*;
import java.io.*;
// 소가 길을 건너간 이유 - 브론즈 1
// 규칙
// 1, 0, 1 => 2번
// 1, 0, 1, 0 => 3번
// 1, 0 => 1번
// n => n - 1
public class Baek14467 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// N 입력
int N = Integer.parseInt(br.readLine());
// 소 위치 배열 선언
int[] position = new int[11];
Arrays.fill(position, -1); // 원래 위치를 -1로 정해줌
// count 변수 선언
int count = 0;
// 순회
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int num = Integer.parseInt(st.nextToken()); // 소 번호
int pos = Integer.parseInt(st.nextToken()); // 소 위치
if (position[num] == -1) { // 처음 위치 확인 후 위치 변경
position[num] = pos;
} else if (position[num] != pos) { // 위치 변화가 발생한 경우
position[num] = pos;
count++;
}
}
System.out.println(count);
}
}
Java
복사