# array	                                    commands	                      return
#[1, 5, 2, 6, 3, 7, 4]	        [[2, 5, 3], [4, 4, 1], [1, 7, 3]]	         [5, 6, 3]


array = [1,5,2,6,3,7,4]
commands = [[2,5,3],[4,4,1],[1,7,3]]


def solution(array, commands):
    answer = []

    for i in range(len(commands)) :
        temp = array[commands[i][0]-1 : commands[i][1]]
        #print(temp)
        sort = sorted(temp)
        #print(sort)
        answer.append(sort[commands[i][2]-1])
        
    return answer

비교적 쉬웠던 문제였던 것 같다. 숫자를 정렬하고 자릿수만 잘 찾아서 배열안에 있는 값을 뽑아주면 해결되는 문제였다.

#    phone_book	                            return
# ["119", "97674223", "1195524421"]	         false
# ["123","456","789"]	                     true
# ["12","123","1235","567","88"]	         false


phone_book = ["119", "97674223", "1195524421"]

def solution(phone_book):
    for i in range(1,len(phone_book)) :    
        if phone_book[i].find(phone_book[0]) != -1 :
            return False
    return True
    
    
print(solution(phone_book))

 

find 함수를 이용해서 풀어 보았는데 위에 예시로 나온 세개의 문제는 해결 됐는데 확장성이 없었고, 효율성도 떨어졌다. find 함수 이외의 방법을 좀 더 연구해 봐야겠다는 생각을 하였고, 아직 내 수준이 한참 못미친다는 것도 인지하는 문제였던 것 같다.

'Algorithm > 프로그래머스 예제' 카테고리의 다른 글

[코딩테스트] K번째 수  (0) 2021.10.27
[코딩테스트] 완주하지 못한 선수  (0) 2021.10.27
#  수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
#  마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때,
#  완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

#participant	                                       completion	                             return
#["leo", "kiki", "eden"]	                         ["eden", "kiki"]	                         "leo"
#["marina", "josipa", "nikola", "vinko", "filipa"]	 ["josipa", "filipa", "marina", "nikola"]	"vinko"
#["mislav", "stanko", "mislav", "ana"]               ["stanko", "ana", "mislav"]	             "mislav"

왼쪽 참가자와 오른쪽 완주자를 보고 참가자 중에 완주하지 못한 사람을 찾는 알고리즘을 완성시켜야 한다.

 

participant = ["mislav", "stanko", "mislav", "ana"]
completion = ["stanko", "ana", "mislav"]

print(participant[-1])

def solution(participant, completion):
    participant.sort()
    completion.sort()
    for i in range(len(completion)) :
        if participant[i] != completion[i] :
            return participant[i]

    return participant[-1]



print(solution(participant, completion))
mislav

 

두 배열을 먼저 정렬시키고 배열을 비교해 가며 참가자 배열에서 완주자 배열에 없는 값들을 찾아내는 방식으로 해결하였다. 프로그래머스 Level 1 수준의 알고리즘이라 아직 할만 하다고 생각했는데, Level2 부터는 막히는 부분이 자주 있었다.

'Algorithm > 프로그래머스 예제' 카테고리의 다른 글

[코딩테스트] K번째 수  (0) 2021.10.27
[코딩테스트] 전화번호 목록  (0) 2021.10.27

+ Recent posts