jm_p_op
.py 알고리즘 모의고사 코딩리뷰 + 수정 본문
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 |