본문 바로가기

코테/프로그래머스

lv1 체육복

첫 시도, 테스트 케이스는 통과가 된다. 정답은 아님

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = 0
        int firstN = n - lost.length//총원 - 도둑맞은 수 = 현재 체육복 있는 사람 수 
        int secondN = 0//빌려준 횟수
        for(int i = 0 ; lost.length > i; i++){
            for(int j = 0; reserve.length> j ; j++){
                if( lost[i] == reserve[j] + 1|| lost[i] == reserve[j] -1 ){
                    lost[i]= -1;
                    reserve[j]= -1;
                    secondN++;
                }
            }
        }
        answer = firstN + secondN; // 현재 소지수 + 빌려준 횟수
        return answer;
    }
}
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
class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = 0//정답
        int lend = 0// 빌려준 수 == 추가 참여 가능 수 
        int reserveLost= 0;
        int lostLength = lost.length ;
        int reserveLength = reserve.length;
        
        for(int i = 0 ; lostLength > i; i++){
            for(int j = 0; reserveLength> j ; j++){
                if( lost[i] == reserve[j]){
                    lost[i]= -1//잃어버린 사람에게 주기, 이때는 자신
                    reserve[j]= -1//예비분 준 사람 소거, 자신이 다른 사람 못 빌려주게끔
                    lend++// 뭐가 되었든 빌려준 것 == 참여 가능 사람
                    break//안써도 결과는 나온다. 정답이 안나올 뿐
                }
            }
        }
        for(int i = 0 ; lostLength > i; i++){
            for(int j = 0; reserveLength> j ; j++){
                if( lost[i] == reserve[j] - 1||  lost[i] == reserve[j] + 1){
                    lost[i]=-1// lost[i]=-1 대신 그냥 밑의 break 를 써서 처리할 수도 있다.
                    reserve[j]= -1;
                    lend++// 빌려준 것 
                    //break; 
                }
            }
        }
        answer = n - lost.length + lend;
        return answer;
    }
}
cs

이렇게 하니 정답이 나왔다.

'코테 > 프로그래머스' 카테고리의 다른 글

상위 n개 레코드  (0) 2020.12.26
lv1 완주하지 못한 선수  (0) 2020.12.24
3진법 뒤집기  (0) 2020.12.06
lv1 수박수박수박수박수박수?  (0) 2020.11.15
lv1 두 개 뽑아서 더하기  (0) 2020.11.10