[boj] 25044번: 에어컨

2023. 1. 24. 11:58·Problem Solving/Baekjoon

출처 : https://www.acmicpc.net/problem/25044

 

25044번: 에어컨

대부분의 DGIST 기초학부 학생들은 기숙사에서 생활하고 있습니다. 여름이 다가옴에 따라 자유롭게 온도를 설정할 수 있는 시원한 에어컨을 사용하게 될 예정입니다. 안타깝게도 에어컨은 매일 1

www.acmicpc.net

 

 

 

1. 문제 설명 

대부분의 DGIST 기초학부 학생들은 기숙사에서 생활하고 있습니다. 여름이 다가옴에 따라 자유롭게 온도를 설정할 수 있는 시원한 에어컨을 사용하게 될 예정입니다. 안타깝게도 에어컨은 매일 15, 18, 21시 정각에 자동으로 꺼지게 설계되어 있습니다. 더군다나 에어컨의 내장 시계가 고장이 나서 세 번째로 꺼질 때마다 에어컨의 시계는 K분간 멈추게 됩니다.

편안한 낮잠을 위해 정시에 맞춰 에어컨을 켜주는 기계를 만들어 둔 정디지 양은 정확한 시간에 에어컨이 켜지지 않자 화가 나기 시작했습니다. 정디지양이 회로이론 과제를 내주기 전에 여러분이 N일째의 에어컨이 꺼지는 시각을 예측해 전원을 켜는 기계를 만들어 정디지양이 화를 내지 않도록 잘 다독여줍시다. (날짜는 0일 00시 00분부터 시작되며 에어컨은 켜져있는 상태입니다.

 

 


2. 접근 방식 

구현 문제이다. 

 

 

 


3. 주석 달기 (변수 설명, 각 줄마다 문장으로 설명, 함수 설명)

import sys
input = sys.stdin.readline
n, k = map(int, input().split())


def Int_to_String(x):
    s = ""
    hour = str((x // 60) % 24)
    if len(hour) == 1:
        s += "0"
    s += hour + ":"

    minute = str(x % 60)
    if len(minute) == 1:
        s += "0"
    s += minute

    return s


stop = [180, 180, 1080]  # 멈출 시간 
count = 0  
startTime = 900  # 15:00에 처음으로 멈춤
today = n * 60 * 24 # 하루를 분 단위로 계산하기 위함 
tomorrow = (n+1) * 60 * 24 # 
ans = []
while startTime < tomorrow: # 멈추는 시간이 내일로 넘어간다면 탈출. 즉, 주어진 n일을 벗어난다면 탈출
    if startTime >= today: # 현재 startTime은 15:00(900분)으로 맞춰져있고 today는 00:00(자정)으로 맞춰져있다.
    			    # n = 0 일때, n일째 에어컨이 켜진 시간은 15:00 18:00 21:00 이다. 
                           # 다시말해서 n = 1000 일때, startTime >= today라는 의미는 해당하는 n일째라는 말이다.
        ans.append(startTime) # 그렇기 때문에, 해당 요일의 에어컨이 켜진 시간을 출력하기 위해 ans에 넣어준다.
    startTime = startTime + stop[count % 3]
    if count % 3 == 2: # 3번째로 꺼질 때마다
        startTime += k # k를 더해준다. 
    count += 1

print(len(ans))
for i in ans:
    print(Int_to_String(i))

 

 

 


4. 분석

1. Time : O(n)
2. Space :
3. 소요시간 : 1시간
4. 제출 횟수 (무작정 제출하기 않기)  : 5회
5. 어려웠던 부분과 해결한 방법 : 아이디어는 쉬웠는데 구현이 제대로 되지 않아 애먹었다.... ㅠㅠ 꾸준히 연습하자.
6. 실수가 줄어들었는가 ? 

 

'Problem Solving/Baekjoon' 카테고리의 다른 글
  • [boj] 1715번: 카드 정렬하기
  • [boj] 1541번: 잃어버린 괄호
  • [boj] 12927번: 배수 스위치
  • [boj] 11399번: ATM
kimdozzi
kimdozzi
끝까지 포기하지 않으면, 내가 다 이겨!
  • kimdozzi
    도브로
    kimdozzi
  • 전체
    오늘
    어제
    • 분류 전체보기 (132)
      • Problem Solving (49)
        • Baekjoon (29)
        • Programmers (0)
        • LeetCode (17)
        • 삼성 유형 (2)
      • Computer Science (27)
        • Operating System (2)
        • Algorithms (13)
        • Network (6)
        • DataBase (6)
      • Backend (33)
        • JavaScript (0)
        • TypeScript (6)
        • Java (7)
        • Spring Boot (7)
        • Spring Security (6)
        • JPA (2)
        • Mybatis (1)
        • Junit5 (1)
        • Redis (3)
      • DevOps (14)
        • Git, Github (5)
        • docker (4)
        • AWS (3)
        • nginx (2)
      • etc (6)
        • IntelliJ (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 티스토리
    • 설정
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    온라인 쿼리
    세그먼트 트리
    도커
    타입스크립트
    구간 업데이트
    알고리즘
    오프라인 쿼리
    S3
    docker
    PrefixSum
    파이썬
    구간합
    imos법
    인터페이스
    AWS
    python
    백준
    삼성기출
    segment tree
    interface
    인덱스 시그니처
    인덱서블 타입
    docker image
    CORS
    Bucket
    오블완
    누적합
    점 업데이트
    TypeScript
    컨테이너
    티스토리챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kimdozzi
[boj] 25044번: 에어컨
상단으로

티스토리툴바