-
String형태로 들어온 시간 리스트의 총합을 구하는 법궁금점의 기록 2022. 9. 9. 18:41728x90반응형
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