Q. 문제
프로그래머스 사이트를 운영하는 그렙에서는 재택근무와 함께 출근 희망 시각을 자유롭게 정하는 유연근무제를 시행하고 있습니다. 제도 정착을 위해 오늘부터 일주일 동안 각자 설정한 출근 희망 시각에 늦지 않고 출근한 직원들에게 상품을 주는 이벤트를 진행하려고 합니다.
직원들은 일주일동안 자신이 설정한 출근 희망 시각 + 10분까지 어플로 출근해야 합니다. 예를 들어 출근 희망 시각이 9시 58분인 직원은 10시 8분까지 출근해야 합니다. 단, 토요일, 일요일의 출근 시각은 이벤트에 영향을 끼치지 않습니다. 직원들은 매일 한 번씩만 어플로 출근하고, 모든 시각은 시에 100을 곱하고 분을 더한 정수로 표현됩니다. 예를 들어 10시 13분은 1013이 되고 9시 58분은 958이 됩니다.
당신은 직원들이 설정한 출근 희망 시각과 실제로 출근한 기록을 바탕으로 상품을 받을 직원이 몇 명인지 알고 싶습니다.
직원 n명이 설정한 출근 희망 시각을 담은 1차원 정수 배열 schedules, 직원들이 일주일 동안 출근한 시각을 담은 2차원 정수 배열 timelogs, 이벤트를 시작한 요일을 의미하는 정수 startday가 매개변수로 주어집니다. 이때 상품을 받을 직원의 수를 return 하도록 solution 함수를 완성해주세요.
- schedules : 직원들의 출근 희망 시각을 담은 배열
- timelogs : 직원들의 실제 출근 시각을 담은 2차원 배열
- startday : 시작 요일을 나타내는 정수(1은 월요일 7은 일요일)
- 10시 13분은 1013, 9시 58분은 958 등으로 시간 표현
* 문제해결의 흐름
1. timelogs에서 주말을 지우기
2. schedules에서 설정한 출근 희망 시각 + 10을 return하는 함수 구현 => 여기서 50분이상일 경우 hour를 증가시킴
3. 2에 따라 지각 여부를 확인한 후 모든 날에 지각을 하지 않았으면 answer + 1
A. 풀이
function solution(schedules, timelogs, startday) {
var answer = 0
schedules.map((baseline, i) => {
//시작 요일이 일요일일 경우 맨 앞, 맨 뒤 출근 시각 빼기
if(startday == 7) {
timelogs[i].splice(0, 1)
timelogs[i].splice(-1, 1)
}
//그 외의 요일은 뒤에서부터 index 계산해서 빼기
else {
timelogs[i].splice(-(startday + 1), 2)
}
//answer에 각 timelogs의 모든 요소가 조건을 만족하면 + 1, 아니면 그대로 두기
answer = timelogs[i].every(time => (baselineSetting(baseline) >= time)) ? answer + 1 : answer
})
return answer;
}
//baselineSetting(기준시각) 분 + 10이 60을 넘을 때 한시간 흐르게, 분은 10으로 나눈 나머지로 설정
function baselineSetting(baseline) {
var min = baseline % 100
var hour = Math.floor(baseline / 100)
if(min + 10 > 59) {
return ((hour + 1) * 100)+ (min % 10)
}
return baseline + 10
}
* 아쉬운점
- 일요일 처리가 요상한 거 같음,,,
- baselineSetting 함수를 좀 더 짧고 간단하게 바꿀 수 있을 거 같음
스터디 진행 후 수정해보겠음!
'Coding Test' 카테고리의 다른 글
[JavaScript] 2025 프로그래머스 코드챌린지 1차 예선 - 지게차와 크레인 (1) | 2025.03.17 |
---|---|
[JavaScript] 2025 프로그래머스 코드챌린지 1차 예선 - 비밀 코드 해독 (0) | 2025.03.17 |
[Section05] Python 알고리즘 문제풀이 09~10 (1) | 2024.06.14 |
[Section05] Python 알고리즘 문제풀이 07~08 (1) | 2024.06.11 |
[Section05] Python 알고리즘 문제풀이 05~06 (0) | 2024.05.28 |