본문 바로가기
알고리즘

알고리즘 6일차

by useSword 2024. 3. 13.

 

아래의 문제를 풀다가 

https://school.programmers.co.kr/learn/courses/30/lessons/42840

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이는 다음과 같다.

answers = [1, 3, 2, 4, 2]


def solution(answers):
    one = [1, 2, 3, 4, 5]
    two = [2, 1, 2, 3, 2, 4, 2, 5]
    three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    score = [0, 0, 0]
    winner = [0, 0, 0]

    for index, i in enumerate(answers):
        if i == one[index % len(one)]:
            # print(f"one이 {index}번째 문제 맞힘")
            score[0] += 1

        if i == two[index % len(two)]:
            # print(f"two가 {index}번째 문제 맞힘")
            score[1] += 1

        if i == three[index % len(three)]:
            # print(f"three가 {index}번째 문제 맞힘")
            score[2] += 1

    max_score = max(score)

    for index, i in enumerate(score):
        if i == max_score:
            winner[index] += index+1
        else:
            winner[index] = None

    result_list = []
    for j in winner:
        if j is not None:
            result_list.append(j)

    return result_list

 

 

<문제점>

1. max_score를 통해 맞춘사람을 우선적으로 만들어야했고 winner라는 변수를 만들었지만 [1,1,1]처럼 나타나 [1.2.3]처럼 나타나는 방법으로 개선해야했다.

2. winner를 print 할 때, [1.None,None]이 나타나 삭제가 가능한지 찾아봤지만 차라리 result_list를 새로 만들어서 for문을 돌려 해결했다.

 

 

리스트 컴프리헨션
최근에 다른 사람들의 풀이를 보면 이런 문법들을 많이들 사용하여 보는 방법은 익혀야겠다고 마음먹었다.

result_list = [x for x in original_list if x is not None]
result_list = []
for x in original_list:
    if x is not None:
        result_list.append(x)

'알고리즘' 카테고리의 다른 글

알고리즘 7일차  (2) 2024.03.14
Queue,DEQ,원형큐  (0) 2024.03.12
병합정렬  (0) 2024.03.11
삽입정렬  (0) 2024.03.11
버블정렬  (0) 2024.03.11