문제
https://school.programmers.co.kr/learn/courses/30/lessons/388351
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 풀이
1. 출근 희망 시간과 출근 인정 시간을 설정한다.
for i in range(len(schedules)):
hope = schedules[i]
safe = schedules[i] + 10
hope : 출근 희망 시간
safe : 출근 인정 시간(출근 희망 시간 + 10분)
2. 출근 인정 시간을 시간 형식에 맞게 바꿔준다.
if safe % 100 >= 60:
safe = safe + 100 - 60
EX] 10시 13분은 1013이 되고, 9시 58분은 958이 된다.
분이 60분이 넘어갈 때는 그냥 10을 더해주면 형식에 어긋나므로 형식을 맞춰준다.
safe % 100 : 뒤 2자리 수 표시(분 표시)
3. 토요일과 일요일의 출근 기록은 무시하고, 평일의 출근 시간이 출근 인정 시간보다 빠르면 count를 센다.
count = 0
for j in range(7):
if startday%7 == 6 or startday%7 == 0:
startday += 1
else:
startday += 1
if timelogs[i][j] <= safe:
count += 1
startday : 출근 기록 이벤트 시작일
1은 월요일, 2는 화요일, 3은 수요일, 4는 목요일, 5는 금요일, 6은 토요일, 7은 일요일
startday%7을 이용해 평일과 주말 구분
1은 월요일, 2는 화요일, 3은 수요일, 4는 목요일, 5는 금요일, 6은 토요일, 0은 일요일
평일에 출근 인정시간보다 빠르게 왔다면 count를 하나씩 늘려준다.
4. 평일에 늦지 않고 출근한 직원의 수를 정답으로 입력한다.
if count == 5:
answer += 1
즉, 평일 5일 모두 출근 인정 시간 안에 온 직원들의 수를 정답으로 추출한다.
정답(전체코드)
def solution(schedules, timelogs, startday):
answer = 0
for i in range(len(schedules)):
hope = schedules[i]
safe = schedules[i] + 10
if safe % 100 >= 60:
safe = safe + 100 - 60
count = 0
for j in range(7):
print('t', timelogs[i][j], startday%7)
if startday%7 == 6 or startday%7 == 0:
startday += 1
else:
startday += 1
if timelogs[i][j] <= safe:
count += 1
if count == 5:
answer += 1
return answer'알고리즘문제풀이' 카테고리의 다른 글
| [백준/Python] 11279번 최대 힙 (0) | 2025.03.31 |
|---|---|
| [백준/Python] 2161번 카드1 (2) | 2025.03.28 |
| [백준/Python] 1406번 에디터 (0) | 2025.03.18 |
| [백준/Python] 9461번 파도반 수열 (0) | 2025.03.14 |
| [백준/Python] 1847번 스택 수열 (0) | 2025.03.12 |
