7일차

양진혁·2021년 11월 7일
0

오늘은 한 문제를 풀었다.
승급을 하기 위해서 4kyu 3kyu 문제를 풀어야 하는데 확실히 난이도가 올라간 것 같다.

첫번째 문제는 4kyu로
format_duration(62) # returns "1 minute and 2 seconds"
format_duration(3662) # returns "1 hour, 1 minute and 2 seconds"

즉 매개변수에 초를 적으면 년, 월, 일, 시, 분, 초를 계산해 주는 것이다.

def format_duration(seconds):
  min,sec = divmod(seconds,60)
  hour,min = divmod(min, 60)
  day, hour= divmod(hour, 24)
  year, day = divmod(day, 365)
  words = ["year","day","hour","minute","second"]
  time = [year,day,hour,min,sec]
  wordstime = list(zip(words,time))
  result=[]
  if seconds == 0:
    return "now"
  for i in wordstime:
    text,number = i
    if number:
      if number == 1:
        re = text
      else:
        re = text+"s"
      re_text = " " + str(number)+ " " + "".join(re)
      result.append(re_text)
  if len(result) == 1:
    return ("".join(result).strip())
  else:
    return (",".join(result[:-1])+" "+"and"+"".join(result[-1])).strip()

우선 divmod를 사용해 변수들을 지정해준다. 그 다음 단어 리스트와 시간 리스트를 zip함수를 통해서 하나로 만들어 준다.
그 다음 number가 1이면 text 아니면 texts를 붙이고 re_text에 숫자와 text를 작성하고 result 결과값 안에 넣어준다.
그리고 만약 result의 값이 하나면 그것만 큰따옴표를 제외하고 공백을 없앤 후 return하고 아닌 경우에 맨 마지막을 제외한 값은 ,를 넣어주고 마지막 앞에는 and를 넣어준 후 return 시켰다.

배운점 및 고민되는 점

zip()함수를 사용해서 key value 의 딕셔너리가 아니어도 리스트 만으로 문제를 해결할 수 있다는 것을 알았다.
요즘 4kyu 난이도 문제를 풀면서 시간을 많이 할애하면서 많은 문제를 풀지 못하고 있다. 앞으로 난이도 낮은 문제들을 많이 풀어볼지 한문제라도 높은 등급의 문제를 풀 지 고민이 된다.

0개의 댓글