[programmers] 체육복

Gomao·2023년 2월 13일
0

코딩테스트 준비

목록 보기
3/20

문제 출처 : [programmers] 체육복

function solution(n, lost, reserve) {
    var answer = 0;
    //논리부터 짠다.
    //lost에 이름이 있는데 reserve에도 이름이 있으면 양쪽에서 모두 지워야함.
    var res_1 = []; // 그걸 다시 이 변수에 담을거다.
    var los_1 = [];
    for(i=0; i<reserve.length; i++){ 
        if(lost.includes(reserve[i]) == false){ // lost배열에 reserve[i]가 없으면
            res_1.push(reserve[i]); // res_1배열에는 내용을 추가해야 한다.
        }
        else{ // lost배열에 reserve[i]가 있으면 res_1 배열에는 추가하지 말고
            lost[lost.indexOf(reserve[i])] = ""; // lost 배열에서 해당 index의 값을 제거해야 한다.
        }
    }
    reserve = res_1;
    // 이제 lost, reserve 배열에는 중복되는 값이 없다.
    // 이제 1부터 n까지의 배열에서 체육복이 있는 사람을 체크한다.
    for(i=1; i<=n; i++){
        if(lost.includes(i) == false){ // lost배열에 i가 없으면
            answer += 1; // 체육복이 있으니 answer에 1을 더함
        }
        else{ // lost배열에 i가 있으면, reserve에서 빌릴수있나 확인하자.
              // 옆에서만 빌릴수 있으니까, 조사할 값은 reserve.indexOf(n), n=i-1, i+1임.
            if(reserve.includes(i-1) == true){ // i-1가 reserve에 있음?
                reserve[reserve.indexOf(i-1)] = ""; // 그 index에 빈칸을 줌.
                answer += 1; // 빌렸음ㅇㅇ
            }
            else if(reserve.includes(i+1) == true){ // i+1가 reserve에 있음?
                reserve[reserve.indexOf(i+1)] = ""; // 그 index에 빈칸을 줌.
                answer += 1; // 빌렸음ㅇㅇ
            }
            else{ //양옆에 다없음?
                answer += 0; // 그럼 넌 없음 ㅇㅇ 못빌림
            }
        }
    }
    
    
    return answer;
}

일단 코드와 친해지기 위해 하드코딩 위주로 문제를 해결하는 중이다.

profile
코딩꿈나무 고마오

0개의 댓글