오늘은 한 문제를 풀었다.
승급을 하기 위해서 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 난이도 문제를 풀면서 시간을 많이 할애하면서 많은 문제를 풀지 못하고 있다. 앞으로 난이도 낮은 문제들을 많이 풀어볼지 한문제라도 높은 등급의 문제를 풀 지 고민이 된다.