CodeSignal 12번 sortByHeight 문제풀이
·
알고리즘/CodeSignal
이 문제는 입력 수열에 -1으로 표시되는 나무들은 그 자리에 두고 나머지 사람들만 오름차순으로 정렬해 반환하는 문제입니다. def sortByHeight(a): treePos,copy=[],a[:] for i in range(copy.count(-1)): treePos.append(copy.index(-1)+i) del copy[copy.index(-1)] copy.sort() [copy.insert(i,-1) for i in treePos] return copy 전 나무들의 위치를 저장하면서 모두 빼준다음 사람들만 있는 수열을 정렬하고, 정렬한 수열에 나무들을 원래 위치에 넣어주었습니다. 이 코드는 for문에서 enumerate를 이용해 코드 길이를 줄일수 있습니다. 심심하시다면 한번 시도해보세요
CodeSignal 11번 allLongestStrings 문제풀이
·
알고리즘/CodeSignal
이 문제는 정수인자를 받고, 가운데를 기준으로 나눈 양옆 수의 합이 같은지 반환해야합니다. 말이 어려운데, 예를들어 123006=true 001010=true 이런식으로 조건이 쉽습니다. 이 문제는 인자를 문자열로 치환한다음 슬라이싱을 통해 풀었습니다. def isLucky(n): input=str(n) middle=len(input)//2 return sum(map(int,input[:middle]))==sum(map(int,input[middle:])) 길이를 2로 나눠 가운데가 어딘지 찾고, 그걸 기준으로 문자열을 슬라이싱한걸 map을 이용해 int형인 배열을 만들고, sum을 이용해 두 부분의 합이 같은지 바로 반환합니다.
CodeSignal 10번 commonCharacterCount 문제풀이
·
알고리즘/CodeSignal
이번엔 코드만 올려드리겠습니다. def commonCharacterCount(s1, s2): sum=0 s2=list(s2) for c in s1: if c in s2: sum+=1 s2.remove(c) return sum
CodeSignal 9번 allLongestStrings 문제풀이
·
알고리즘/CodeSignal
이번 문제는 길이가 가장 긴 문장들만 출력해주는 문제입니다. 조금의 기초 문법과 함수만 안다면 굉장히 쉽게 풀수 있습니다. def allLongestStrings(inputArray): maxlen=max(map(len,inputArray)) return [string for string in inputArray if len(string)>=maxlen] 이 코드는 maxlen에 map함수를 이용해 문자열들의 길이가 있는 수열을 만들고, 그중 가장 큰 수를 max함수로 찾아 넣습니다. 이후 리스트 컴프리헨션을 이용해 inputArray에 있는 문장중 길이가 maxlen을 넘는것만 반환해주는것입니다. maxlen을 정의할때 map함수를 쓰지 않고 max(len(s) for s in inputArray) 이..