궁금점의 기록

String형태로 들어온 시간 리스트의 총합을 구하는 법

Hyunie 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
반응형