jm_p_op

.py 알고리즘 모의고사 코딩리뷰 + 수정 본문

수학/알고리즘

.py 알고리즘 모의고사 코딩리뷰 + 수정

jm_p_op 2023. 4. 5. 22:14
def solution(array):
    count = [0] * (max(array)+1)  # 요소를 0으로
# 인덱스는 0부터 시작한다. 그래서 +1를 해줬다.
    for l in array:  # array의 요소가 몇 번 기록되는지 세어주기위해 사용
        count[l] += 1  # 인덱스는 0부터 시작한다. array을 돌려주기위해 +1
 
#####################################################################################
    r = 0  # 최빈값의 을 0으로 만들고 최대 갯수를 알기위해 사용
    for a in count:
        if a == max(count):  # 같은 숫자를 찾기위해 == 를 사용했다.
            r += 1  # 최댓값과 같은 값이 있으면

    if r > 1:  # 최빈값이 2개 이상이면 -1을 리턴
        return -1  # 여러 개인 경우에 -1를 리턴.
    else:  # 최빈값이 1개이면 해당 숫자를 리턴
        return count.index(max(count))

 

1. count- 0부터 array의 최대값을 만큼의 요소를 만들후 요소별 갯수를 추가한다

=>  array 요소중 음수가 있다면?  count에서 오류

=> array에 큰수가 있다면 count의 요소가 많아진다

해결책 : 필요한 요소만 갯수 세기

 

2. 최대값과 같은것의 갯수 구하기

=>최대 갯수 비교중 겹치는것이 있을 때 더 작동할 필요가 있는가?

해결책 : 겹치는것이 생길시 바로 끝내

 


2.

array = [1, 2, 5, 10]


def solution(array):
    # count_list=[1,2,5,10] array중복값 제거
    # count=[0,0,0,0] count_list요소별 갯수 초기설정
    count_list = set(array)
    count = [0] * len(count_list)
    for l in array:  # array의 요소가 몇 번 기록되는지 세어주기위해 사용
        if l in count_list:

            count[count_list.index(l)] += 1
        else:

            count.append(1)


# 3
    r = 0  # 최빈값의 을 0으로 만들고 최대 갯수를 알기위해 사용
    for a in count:
        if a == max(count):  # 같은 숫자를 찾기위해 == 를 사용했다.
            r += 1  # 최댓값과 같은 값이 있으면
        if r > 1:   # 최빈값이 2개 이상일땐 더이상 돌릴필요가 없으므로 걸러주는if문.
            result = -1  # 걸려졌을때의 결과값은 -1
            return result  # 결과값 나왔으니 그놈을 solution함수의 output값 내보내기

    result = count_list[count.index(max(count))]
    return result

'수학 > 알고리즘' 카테고리의 다른 글

모의고사 해설 4. 둘만의 암호  (0) 2023.04.20
모의고사 해설 3. 방의갯수  (0) 2023.04.18
모의고사 해설 3. array  (0) 2023.04.03
모의고사 해설2  (0) 2023.03.25
모의고사 해설  (1) 2023.03.20