[프로그래머스/Python] 유연근무제

2025. 3. 21. 13:19·알고리즘문제풀이

문제

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
'알고리즘문제풀이' 카테고리의 다른 글
  • [백준/Python] 11279번 최대 힙
  • [백준/Python] 2161번 카드1
  • [백준/Python] 1406번 에디터
  • [백준/Python] 9461번 파도반 수열
jungyn
jungyn
jungyn 님의 블로그 입니다.
  • jungyn
    jungyn 님의 블로그
    jungyn
  • 전체
    오늘
    어제
    • 분류 전체보기 (36)
      • 알고리즘문제풀이 (31)
      • 제로인턴 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    BFS
    수들의 합 2
    후기
    2차원행렬
    스택 수열
    2108
    사전직무교육
    DP
    다이나믹프로그래밍
    통계헉
    시간초과
    스택 2
    18110
    11729
    카드1
    1629
    counter
    solved.ac
    백준
    2161
    28278
    2606
    너비우선탐색
    제로인턴
    2563
    1847
    스택
    교점개수
    SYS
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
jungyn
[프로그래머스/Python] 유연근무제
상단으로

티스토리툴바