@@ -10,54 +10,106 @@ public static void main(String[] args) throws IOException {
1010 int N = Integer .parseInt (split [0 ]);
1111 int M = Integer .parseInt (split [1 ]);
1212
13- // 기차 배열 초기화
14- int [][] arr = new int [N + 1 ][21 ];
13+ /*
14+ * 기차에 사람이 타있으면 1, 없으면 0
15+ * */
1516
16- // 명령 처리
17- for (int i = 0 ; i < M ; i ++) {
18- String [] line = reader .readLine ().split (" " );
19- int train = Integer .parseInt (line [1 ]);
17+ int [][] arr = new int [N +1 ][21 ];
2018
21- switch (line [0 ]) {
22- case "1" : // 승차
23- int seatToBoard = Integer .parseInt (line [2 ]);
24- arr [train ][seatToBoard ] = 1 ;
19+ for (int i =0 ; i <M ; i ++){ //M개의 명령 실행
20+ String [] line = reader .readLine ().split (" " );
21+ int train_i = Integer .parseInt (line [1 ]);
22+ // System.out.println(line[0]);
23+ switch (line [0 ]){
24+ case "1" :
25+ first (arr , train_i , Integer .parseInt (line [2 ]));
2526 break ;
26- case "2" : // 하차
27- int seatToLeave = Integer .parseInt (line [2 ]);
28- arr [train ][seatToLeave ] = 0 ;
27+ case "2" :
28+ second (arr , train_i , Integer .parseInt (line [2 ]));
2929 break ;
30- case "3" : // 뒤로 이동
31- for (int j = 20 ; j > 1 ; j --) { // 20번 칸까지 뒤로 이동
32- arr [train ][j ] = arr [train ][j - 1 ];
33- }
34- arr [train ][1 ] = 0 ; // 1번 좌석은 빈 상태
30+ case "3" :
31+ third (arr , train_i );
3532 break ;
36- case "4" : // 앞으로 이동
37- for (int j = 1 ; j < 20 ; j ++) { // 1번 칸부터 앞으로 이동
38- arr [train ][j ] = arr [train ][j + 1 ];
39- }
40- arr [train ][20 ] = 0 ; // 20번 좌석은 빈 상태
33+ case "4" :
34+ fourth (arr , train_i );
4135 break ;
4236 default :
43- // 잘못된 명령어는 무시
4437 break ;
4538 }
4639 }
4740
48- // 중복된 상태 제거
41+ // for(int[] array : arr){
42+ // for(int num : array){
43+ // System.out.print(num + " ");
44+ // }
45+ // System.out.println();
46+ // }
47+
4948 HashSet <String > set = new HashSet <>();
50- for (int i = 1 ; i <= N ; i ++) {
51- StringBuilder sb = new StringBuilder ();
52- for (int j = 1 ; j <= 20 ; j ++) { // 좌석 상태만 문자열로 변환
53- sb .append (arr [i ][j ]);
54- }
55- set .add (sb .toString ()); // 중복된 배열 상태 제거
49+ //배열들을 map에 넣는다면?
50+ // for(int i=1; i<N+1; i++){
51+ // set.add(arr[i]);
52+ // }
53+
54+ // for(int[] array : arr){
55+ // String s = Arrays.toString(array);
56+ // set.add(s);
57+ // }
58+
59+ // for (int i = 1; i <= N; i++) { // i = 1부터 시작
60+ // for(int j=1; j<21; j++){
61+ // System.out.print(arr[i][j] + " ");
62+ // }
63+ // System.out.println();
64+ // }
65+
66+ for (int i = 1 ; i <= N ; i ++) { // i = 1부터 시작
67+ String s = Arrays .toString (arr [i ]);
68+ set .add (s );
5669 }
5770
58- // 결과 출력
59- writer .write (set .size () + "\n " );
60- writer .flush ();
61- writer .close ();
71+ System .out .println (set .size ());
72+
73+ }
74+
75+ public static void first (int [][] arr , int i , int x ){ //해당 칸 승차
76+ // System.out.println("test1");
77+
78+ // if(arr[i][x] == 0){
79+ arr [i ][x ] = 1 ;
80+ // }
81+ }
82+
83+ public static void second (int [][] arr , int i , int x ){ //해당 칸 하차
84+ // System.out.println("test2");
85+
86+ // if(arr[i][x] == 1){
87+ arr [i ][x ] = 0 ;
88+ // }
89+ }
90+
91+ public static void third (int [][] arr , int i ){ //한칸 씩 뒤로 이동
92+ // System.out.println("test3");
93+ for (int j =20 ; j >1 ; j --){
94+ arr [i ][j ] = arr [i ][j -1 ];
95+ // if(arr[i][j] == 1){ // 해당 좌석에 사람이 있는 경우에만
96+ // arr[i][j+1] = 1; // 뒤로 좌석 옮기기
97+ // arr[i][j] = 0;
98+ // }
99+ }
100+ arr [i ][1 ] = 0 ;
101+ }
102+
103+ public static void fourth (int [][] arr , int i ){ //한칸 씩 앞으로 이동
104+ // System.out.println("test4");
105+
106+ for (int j =1 ; j <20 ; j ++){
107+ arr [i ][j ] = arr [i ][j +1 ];
108+ // if(arr[i][j] == 1){ // 해당 좌석에 사람이 있는 경우에만
109+ // arr[i][j-1] = 1; //앞으로 좌석 옮기기
110+ // arr[i][j] = 0;
111+ // }
112+ }
113+ arr [i ][20 ] = 0 ;
62114 }
63115}
0 commit comments