본문 바로가기

Programming/Python

[python] codeSignal 문제풀이 (9)

9. Given an array of strings, return another array containing all of its longest strings.

 

Example )

For inputArray = ["aba", "aa", "ad", "vcd", "aba"],

the output should be allLongestStrings(inputArray) = ["aba", "vcd", "aba"].

 

1
2
3
4
5
6
7
8
9
10
11
def allLongestStrings(inputArray):
    array_len = []
    for i in range(len(inputArray)):
        array_len.append(len(inputArray[i]))
    len_max = max(array_len)
    
    new_list = []
    for i in range(len(inputArray)):
        if len(inputArray[i]) == len_max:
            new_list.append(inputArray[i])
    return new_list

'빨리 풀어야 한다!'는 생각에 노가다스러운 코드를 작성해서 정답을 맞추는데 급급했다.

이왕 공부하기 위해서 코드를 작성하는 것이니, 앞으로는 신중하게 생각하고 좀 더 간단한 코드를 만들어보자!

 

1
2
3
4
5
6
7
8
9
10
11
# solution code1
def allLongestStrings(inputArray):
    m = max(len(s) for s in inputArray)
    r = [s for s in inputArray if len(s) == m]
    return r
 
 
# solution code2
def allLongestStrings(inputArray):
    return [i for i in inputArray if len(i) == len(max(inputArray, key=len))]