자바 초급문제로 맨땅에 해딩하기

자바 Level 2 문제, 2. 프린터 진행 중

Jungsoomin :) 2020. 4. 18. 00:23

프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/42587)

자바 Level 2 문제의 프린터 이다.

 

금일에도 자리를 잡고 앉아서 포스트잇에 "이렇게 저렇게 하면..." 하면서 적어가며 다가갔는데 개인적으로 컬렉션 사용이 익숙하지가 않고 제대로 모르는 부분이 많아서 이리저리 코드를 짜내려가다가 문득 '이해하지 못하는 것을 정답을 위해 잔뜩 사용하는 것보다 직접 내가 사용할 수 있는 것들을 다양하게 사용하고 더 다양한 방법으로 접근해보고 싶다.' 라는 생각이 들어서 새로운 클래스를 가지고 접근하여 다시 시작하게 되었다. 컬렉션과 Wrapper 클래스에 대해서 이리저리 찾아보면서 시간을 보내고는 했는데 어느 사이에 문제풀기에만 급급한 것 같은 자신의 모습이 조금씩 비춰지고 느껴져서 생각을 바꾸고 클래스를 새로 열었다. 내가 배열에 익숙하지 않은 만큼 'Arrays 클래스의 다양한 메소드를 접하고 그를 이용해서 움직이고 싶다'는 욕심이 들었던 것 같다. 

 

내일도 헤딩 시작이다 :) 

 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package programmers_프린터;
 
import java.util.*;
public class subClass {
    public int solution(int[] priorities, int location) {
        int answer =0;
        ArrayList<check> printList = new ArrayList<check>();//check 타입 리스트
        List<check> printList2 = new ArrayList<check>();
        
        for(int i=0; i<priorities.length;i++) {
            printList.add(new check(i, priorities[i]));//List에 인덱스랑 중요도가 들어갔다.
        }
        
        Arrays.sort(priorities);    
        int maxVaule = priorities[priorities.length-1];// 최댓갑 확인
        
        for(int i=0; i<printList.size();i++) {
            if(printList.indexOf(i) == maxVaule) {
                printList2 = printList.subList(i, printList.size());//복사
                break;
            }
        }
        //printList2 에 잘린 배열이 있음.
        
        for(int i=0; i<printList.size();i++) {
        printList2 = (List<check>) printList.get(i);    
        if(printList.indexOf(i) == maxVaule) {break;}
        }//printList2 에 나머지 값도 들어갔을 것
        
        for(int i=0; i<printList2.size();i++) {
            if(location == printList2.get(i).location) {//location 값이 같다면
                answer = printList2.indexOf(i);
                answer +=1;
                break;
            }
        }
        
        
        
        return answer;
    }
    
    public class check {
        int location =0;
        int important =0;
        
        public check(int location, int important) {
            this.location = location;
            this.important = important;
        }
    }
}
cs

 

이후에 다시 짜내려간 로직이다, 아직 기본적인 배열 항목추가만 완료한 상태라서 더 진행해야 윤곽이 잡힐 듯 하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package programmers_프린터;
 
import java.util.Arrays;
 
public class subClass2 {
    public int solution(int[] priorities, int location) {
        int answer=0;
        check[] list = new check[priorities.length];  
        
        for(int i=0; i<priorities.length;i++) {
            list[i] = new check(i,priorities[i]);// 여기까지 인덱스 넘버 중요도 정리 끝
        }
        Arrays.sort(priorities);
        int max = priorities[priorities.length-1];//최댓값 확보함 기준으로 인덱스 복사할 것임
        
        for(int i=0; i<list.length;i++) {
            if(list[i].proper == max) {// 중요도가 같은 인덱스 발견 시.
                
            }
        }
        
        
        
        
        
        return answer;
    }
    
    public class check {
        
        int location;
        int proper;
         check(int location, int proper) {
        this.location = location;
        this.proper = proper;
        }
    }
}
 
cs