[Python 문제풀이(CodeSignal) #2] 2번 문제

파이썬 문제풀이 / / 2020. 1. 18. 05:03

<이전글>

2020/01/13 - [파이썬 문제풀이] - [Python 문제풀이(CodeSignal) #1] 튜토리얼 & 1번 문제

2020/01/12 - [파이썬 문제풀이] - [Python 문제풀이(CodeSignal) #0] 회원가입

 

 

2번 문제

저번에 이어서 2번 문제도 풀어봅시다.

 

문제 설명

"1년이 주어지면, 지금 세기로 돌아가라. 1세기는 101년부터 200년까지 100년, 2세기를 포함하며 1세기를 포함한다."  -by 파파고

 

언뜻 보면 무슨 말인지 잘 이해가 되지 않습니다.

 

 

그러나 예를 확인하면 1905년은 20, 1700은 17이 나온 것으로 보아

연도를 입력하면 알맞은 세기를 출력하는 프로그램을 만들라는 것 같네요.

 

문제 풀이

그럼 함수를 제작해 봅시다.

 

 

위처럼 작성하고

시작 해보면 어떨까요?

 

 

위처럼 1700년일 때는 정상적으로 17세기가 나오지만

 

 

1905년일 때는 20세기가 나와야 하나 19.05가 나와 문제 해결이 되지 않습니다.

 

그럼 다시 한번 범위를 생각해봅시다.

 

 

위로부터 1700년까지는 17세기지만, 1701년부터는 18세기가 될 것임을 알 수 있습니다.

 

그렇다면 "year//100"을 하면 소수점 자리가 없어지기 때문에 해결될까요? 하지만 이 경우에는 역시 1701년이 17세기로 나오는 문제가 발생합니다.

 

"(year//100)+1"의 경우에는 1701년은 18세기로 나오나, 1700년도 18세기로 나오는 문제가 있습니다. 그렇다면 어떻게 해결할 수 있을까요?

 

간단합니다. 바로 "((year-1)//100)+1"을 하는 것입니다.

 

이렇게 되면 170X년이 18세기로 나오는 것은 물론, 1700년의 예외 경우에도 1699년이라 인식되기 때문에 16세기로 정확한 계산이 가능해질 것입니다.

 

 

이제 실행해 보도록 하겠습니다.

 

 

9개의 테스트가 모두 성공한 모습입니다.

마지막으로

을 눌러 제출하면

 

 

성공적으로 해결된 모습을 확인하실 수 있습니다.

난이도도 점점 올라가는 것이 체감되네요!

다음은 3번 문제로 돌아오겠습니다.

 

 

 

dduckyee(떡이)의 티스토리

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기