반응형

문제: https://school.programmers.co.kr/learn/courses/30/lessons/12906

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

<문제 설명>
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.

 

내 풀이

def solution(arr):
    answer = []
    for i in range(len(arr) - 1):  
        if arr[i] != arr[i + 1]:  
            answer.append(arr[i]) #뒷숫자와 다른 경우 apppend
    answer.append(arr[-1])  #마지막 원소 추가
    return answer

 

반복문이 끝나면 마지막 하나의 문자가 남아있기 때문에 반드시 추가해주어야 한다. 

반응형
반응형

문제: https://school.programmers.co.kr/learn/courses/30/lessons/42576

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

<문제 설명>
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

 

내 풀이

정확성 테스트 성공 / 효율성 테스트 실패

def solution(participant, completion):
    cnt = 0
    for i in completion:
        participant.remove(i)
    answer = participant[0]
    return answer

 

for문과 remove를 사용해 제거하고자 했으나 시간 초과로 테스트 실패

 

Hash 이용 풀이

해시 함수(Hash Function) - 임의의 값을 고정된 길이의 데이터로 변환하는 함수

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]

 

우선 정렬해주고, 두 리스트를 비교해 맞지 않는 이름을 찾아낸다. 순서가 모두 맞을 경우 맨 뒤의 남은 이름 1개를 return 하는 방식

반응형

+ Recent posts