ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • String형태로 들어온 시간 리스트의 총합을 구하는 법
    궁금점의 기록 2022. 9. 9. 18:41
    728x90
    반응형

    1. Input data 형태: ["시간 1", "시간 2", ..., "시간 n"]

    2. len(Input data) = n

    3. 시간의 형태는 총 세 가지 - "시:분:초", "분:초", "초"

    4. 각 시/분/초는 00으로 표현 될 수 있음 - e.g. "00:00:01", "00:00"

    5. 하나의 Input data안에 세 가지 형태가 섞여서 나타날 수도, 아닐 수도 있음

     

    생각했던 Sudo code

    sum_times = [0,0,0]
    for 시간 in input_data:
        new_times = 시간.split(":")
        carry = 0
        for i in new_times와 sum_times 중 긴 리스트의 길이 역순:
        	if 두 리스트의 길이 같다면:
            	idx = 0
            elif 두 리스트의 길이 다르면:
            	idx = -1
        	new_sum_time = int(긴 리스트[i]) + int(짧은 리스트[i+idx]) + carry
            if new_sum_time >= 60:
            	carry = 1
                new_sum_time-=60
            if 두 리스트의 길이가 다르고 i가 0이면:
            	new_sum_time = int(긴 리스트[i]) + carry
            sum_times[i] = new_sum_time

     

    Sudo Code 짜면서 다음 조건을 구현하는 가장 효율적인 코드가 무엇인지 궁금해짐

    - 정수로 이루어진 두 개의 리스트가 인풋으로 들어옴

    - 두 리스트의 길이는 같을 수도, 다를 수도 있음

    - 두 리스트의 길이가 같은 경우, 인덱스가 같은 위치의 정수끼리 더한 합을 동일한 인덱스에 가지는 리스트를 반환함

       e.g. Input: [0,2,1], [1, 0,20] / output: [1,2,21]

    - 두 리스트의 길이가 다른 경우, 각 리스트의 맨 뒤부터 더한 합을 출력 리스트 뒤부터 배치하고, 긴 리스트의 나머지 요소를 출력 리스트의 동일한 인덱스에 배치하여 반환함

       e.g. Input: [3,30], [1,20,10] / output: [1, 23, 40]

    - 단, 정수의 합이 60이상인 경우 출력 리스트에서 바로 앞에 배치되는 숫자에 1을 받아올림 해주고, 해당 위치에는 60을 뺀 나머지 값을 배치한다.

       e.g. Input: [3,30], [1,20,40] / output: [1, 24, 10]

    728x90
    반응형

    '궁금점의 기록' 카테고리의 다른 글

    데이터 관련 용어 정리  (0) 2022.12.18
    02.26 공부 정리  (0) 2022.02.26
    02.05. 공부정리  (0) 2022.02.05
    OS관련 질문  (0) 2021.12.28
    통계  (0) 2021.07.25

    댓글