Q. https://www.acmicpc.net/problem/14467
14467번: 소가 길을 건너간 이유 1
3번 소는 위치 1, 0, 1에서 관찰되었으므로 길을 최소 두 번 건넜음을 확인할 수 있다. 4번 소도 길을 한 번 건넜으며, 나머지 소는 길을 건넌 기록이 확인되지 않는다.
www.acmicpc.net
# 아이디어
1. 소의 번호 인덱싱한 배열 생성
2. 배열 -1로 초기화
3. cow[] 의 값이 !(-1 또는 이전과 같은 값)이면 cnt++
소의 인덱싱
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
-1 | 1 | 1 | 1 | -1 | 0 | -1 | -1 | -1 | -1 |
0 | 0 | ||||||||
0 | |||||||||
1 |
=> cow[2] : 1->0 cnt++, 0->1 cnt++
=> cow[3] : 1->0 cnt++
💯💯💯
※ String 출력: String.format, + 연산자, StringBuilder, StringTokenizer
※ 코드를 다시 볼 때 깔끔하게, 보기 쉽게 하는 것을 목표로 하자!!!
※ import java.utils 라이브러리에 익숙해지자!!!
# Arrays.fill() 사용하여 배열을 모두 같은 값으로 초기화.
코드 변경 전
package baekjoon;
import java.util.Scanner;
public class B14467 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
int[] cow = new int[10];
for (int i = 0; i < cow.length; i++) {
cow[i] = -1;
}
int cnt = 0;
int cowIndex, cowLocation;
for (int i = 0; i < input; i++) {
cowIndex = sc.nextInt();
cowLocation = sc.nextInt();
if ((cow[cowIndex - 1] != cowLocation) && (cow[cowIndex - 1] != -1))
cnt++;
cow[cowIndex - 1] = cowLocation;
}
System.out.println(cnt);
sc.close();
}
}
코드 변경 후
=> BufferedReader로 바꾸려는데 쉽지가 않다... StringTokenizer를 사용하네???
'코테문제' 카테고리의 다른 글
[백준] B11170 (0) | 2023.10.12 |
---|---|
[백준] B2460 (0) | 2023.09.29 |
[백준] S17276 미완성 (0) | 2023.09.27 |
[백준] S1913 (0) | 2023.09.24 |
[백준] S20546 (0) | 2023.09.15 |