3. 섬 건너기
1) 문제: A, B 두명이 배를 타고 섬을 건넙니다. 배를 타기위해 많은 사람이 대기 중입니다. 조건과 아래의 입출력을 만족시키시오.
- 조건: A, B는 무조건 같이 승선해야 한다.(승선 순서는 A -> B 이며 같이 승선 못할시 다음 것을 탄다.)
- 조건: 한 배에 탈 수 있는 인원은 정시에는 25명, 10분마다 15명 입니다.
- 조건: 배는 매일 9시부터 21시 전까지(21시 미 포함) 10 분 단위로 들어옵니다.
- 조건: 1월은 1024일, 2월은 512일, 3월은 256일, 4월은 128일, 5월은 64일, 5월은 32일, 6월은 16일, 7월은 8일, 9월은 4일, 10월은 2일이며, 10월까지밖에 없습니다.
- 조건: 시간의 개념은 동일합니다. (하루는 24시간, 1시간 60분, 1분 60초), 현재 날짜는 2020년 1월 1일 입니다.
- 조건: B가 화장실이 급하다 하여 화장실을 갔으며, 현재시간에 '분' 만큼 배의 출발 시간이 늦어집니다.
**입력**
대기인원 = 14000605
**출력**
2025년 2월 413일 11시 0분 출발
**입력**
대기인원 = 1200202
**출력**
2020년 1월 1000일 11시 0분 출발
2) 문제 풀이
import datetime
대기인원 = 14000605
def solution(대기인원):
# 1년의 날짜수
num_days_per_year = 0
for i in range(10, 0, -1):
num_days_per_year += 2 ** i
print("num days per year:", num_days_per_year)
daily_boarding = 대기인원 // 1200
# '년'
year = daily_boarding // num_days_per_year
print("year:", year)
#대기 '년'을 뺀 나머지 날짜들.
days = daily_boarding % num_days_per_year
print("days:",days)
#'월'
cumulative_days_per_month = 0 #'일'계산을 위해 필요.
month = 0
for i in range(10, 0, -1):
deducation_days = cumulative_days_per_month #'일'계산을 위해 필요.
cumulative_days_per_month += 2**i
month += 1
if cumulative_days_per_month > days:
break
print("month:", month)
#'일'
day = days - deducation_days
print("day:",day)
#몇시에 탔는지 계산하기
num_left_day=대기인원 % 1200
print("num left day:", num_left_day)
#출발 '시간'
hour = num_left_day//100+9
print("hour:",hour)
#출발 '분'
start_minute = [25, 40, 55, 70, 85, 100]
remaining_number = num_left_day % 100
for i in start_minute:
if i>remaining_number:
minute = start_minute.index(i) * 10
break
print("minute:",minute)
today_minute = datetime.datetime.today()
today_minute = today_minute.minute
if(remaining_number % 100 == 99):
hour += 1
minute = 0
if(today_minute + minute > 60):
minute = (today_minute + minute) - 60
hour += 1
return print(f'{year+2020}년, {month}월 {day}일, {hour}시, {minute}분 출발')
solution(대기인원)
※참고자료: 인프런 - 눈떠보니 코딩 테스트 전날! 강좌
※참고자료: 나무위키
※Copyright 사도출판 All rights reserved.
※본 게시물 속 내용을 통해 직접적으로 상업적인 목적이 없으며 게시물은 개인 공부 목적 및 지식 간단 전파목적으로 사용되었음을 명시함. 책 및 인터넷 검색을 참고자료로 하여 실습 및 학습을 한 내용을 올림. 참고한 책 및 인터넷 검색물의 저작권을 존중하므로 책 및 인터넷 저작물의 일부 또는 전부를 무단 복제 및 무단 전재 및 재배포하지 않음(일부라 함은 30%이하의 내용 중복은 불포함[30%이하는 다른 저작물로 간주]). 또한 책 또는 매체를 구매하지 않고는 정확한 내용을 알 수 없으며 개인이 따로 공부한 내용도 추가 되어 책과는 내용이 매우 상이할 수 있음.즉 본 게시물 작성자는 이 게시물을 읽는 모든 사람들이 책을 구매거나 인터넷 검색을 더하여 지식을 같이 나누었으면 좋겠음.
'Programming > Solving_problems' 카테고리의 다른 글
[기본_7문제_풀기/제주코딩베이스캠프] 6. 행렬 계산 (0) | 2020.07.07 |
---|---|
[기본_7문제_풀기/제주코딩베이스캠프] 5. 그림자 연결 (0) | 2020.07.07 |
[기본_7문제_풀기/제주코딩베이스캠프] 4. 자리 양보하기 (0) | 2020.07.06 |
[기본_7문제_풀기/제주코딩베이스캠프] 2. 징검다리 건너기 (1) | 2020.07.06 |
[기본_7문제_풀기/제주코딩베이스캠프] 1. 암호해독 (0) | 2020.07.06 |