면접
프로그래머스 체육복
index.ys
2023. 8. 6. 00:25
로직
- 반복문을 이용하여 1부터 n까지의 학생번호를 키로 사용하여 students 객체 초기화, 체육복이 있는 상태
- lost 배열에 있는 학생들은 체육복이 없는 상태이므로 lost배열을 순회하면서 해당 학생들의 students객체 값에 1을 뺌 => 체육복이 없는 학생들을 찾아냄
- reserve 배열에 있는 학생들은 여벌의 체육복을 가지고 있는 학생, reserve 배열을 돌면서 학생들의 students 객체에 1을 더하여 여벌의 체육복을 가진 상태를 찾아냄
- 반복문을 돌면서 1부터 n까지의 학생번호를 순회
- 만약 현재 학생이 students[i]이 여벌의 체육복을 가지고 왼쪽 학생 students[i-1]이 체육복이 없는 상태라면 왼쪽 학생에게 체육복 +1 현재 학생의 체육복 갯수 -1
- 현재 학생이 여벌의 체육복을 가지고 오른쪽 하생은 체육복이 없다면 오른쪽 학생에게 빌려주고 현재 학생의 체육복 감소
- 반복문을 돌면서 students 객체에 체육복이 있는 학생을 카운트하여 합산하여 반환
function solution(n, lost, reserve) {
const students = {};
let answer = 0;
for(let i = 1; i <= n; i++){
students[i] = 1;
}
lost.forEach(number => students[number] -= 1);
reserve.forEach(number => students[number] += 1);
for(let i = 1; i <= n; i++){
if(students[i] === 2 && students[i-1] === 0){
students[i-1]++;
students[i]--;
} else if(students[i] === 2 && students[i+1] === 0){
students[i+1]++;
students[i]--;
}
}
for(let key in students){
if(students[key] >= 1){
answer++;
}
}
return answer;
}
https://school.programmers.co.kr/learn/courses/30/lessons/42862
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr