def solution(array):
dict_array = {}
for i in array:
if i in dict_array:
dict_array[i] += 1
else:
dict_array[i] = 1
max_idx = -1
max_cnt = 0
for i in dict_array:
if dict_array[i] > max_cnt:
max_cnt = dict_array[i]
max_idx = i
elif dict_array[i] == max_cnt:
max_idx = -1
answer = max_idx
return answer
def solution(array):
while len(array) != 0:
for i, a in enumerate(set(array)):
array.remove(a)
if i == 0: return a
return -1
enumerate를 공부한 뒤 위 코드를 이해해보았다.
1.array
의 길이가 0이 될 때까지while
문을 돌린다.
2.enumerate(set(array))
값으로for문
을 돌려array
에서 제거한다.
3.enumerate(set(array))
에 값이 하나만 남으면 그 값을return
한다.
4. 만약 최빈값이 여러개 나오는 경우 -1을return
한다.
def solution(array):
while len(array) != 0:
for i, a in enumerate(set(array)):
array.remove(a)
if i == 0: return a
return -1
if i ==0: return a
는 for문 안에 있는 것도 아닌데 어떻게 i, a를 들고나와서 검증을하고 return을 할 수 있는지 이해가 안갔다. python의 globals(), local() 함수를 활용하여 단계별로
namespace(파이썬에서 변수를 저장하는 공간)
를 샅샅이 뒤져보았다.
- 결과적으로 def(함수) 내에 선언된 변수만 지역변수로 취급하며, 이외는 모두 전역으로 선언된다는 결론을 내릴 수 있었다.
- 원인은... 알 수 없었다. (더 성장해서 다시 한번 싸워보는 걸로...)
파이썬은 정말... 알 수 없는 놈이다.
1.파이썬의 enumerate() 내장 함수로 for 루프 돌리기 - DaleSeo
3.Python의 yield 키워드 알아보기 - tech.ssut(suhun han)
이겨내 버리자구요 ~ 파이썬 자식....!!