일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 22938번
- error
- 스파르타
- 장고 다중이미지
- 파이썬
- 20492번
- 프로그래머스입문
- python
- html
- 참가후기
- 반응형
- sql
- GIT
- css
- django multi image
- 프로그래머스
- 무료강의
- React
- jquery
- ㅐㄱ이
- MongoDB
- 장고이미지처리
- 개인정보수집유효기간
- 파이썬무료강의
- 프론트엔드
- 스파르타코딩클럽
- useState
- 네이버커넥트재단
- SEF2022
- 코딩기초트레이닝
- Today
- Total
코딩,해볼까
[programmers] 입문 : 최빈값 구하기 / 최빈값.... 최qkfsha... 본문
1. 문제풀이 시작점에서의 나의 계획 : 비교/삭제 해나가면서 결과를 출력한다.
array(list)의 0번째와 1번째 비교 후 삭제, 0번째와 2번째 비교, 0번째와 3번째 비교...
> 기본값이 있는 상태에서 기본값보다 큰 값이 오면 기본값은 삭제하고 큰 값이 기본값이 된다.
# array 안의 숫자들을 카운트 해야함
# array 함수에서 카운트했을 때 큰 수를 find_max_num 변수에 저장하여 프린트 해볼까?
# find_max_num = array.count(i)
# print(find_max_num)
array = [1, 2, 3, 3, 3, 4]
for i in array:
count_list = []
count_list.append(array[0])
if count_list[0] < array.count(i):
count_list.pop(0)
count_list.append(i)
elif count_list[0] == array.count(i):
print(count_list)
2. 여기서부터 세히씨와 같이 풀어봤다.
1) append 해줄 때 원래 값, 갯수 둘 다 들어가면 어떨까?
- 리스트에 딕셔너리, 딕셔너리에 딕셔너리... 해보다가 append가 오류를 뱉어내서 결국 2차원 배열 형태로 넣기로 했다.
- count_list.append([array.count(i), i])
2) for문 안에 빈 배열 count_list = [] 을 넣었더니
[[1,1]]
[[1,1],[2,1]]...
[[1,1],[2,1],[3,3],[3,3],[3,3],[4,1]]
- 배열이 반복되어 끝에서야 나왔다.
- 3,3이 반복되어 출력되었다.
해결 : array_set = list(set(array)) 로 중복이 제거된 새로운 배열을 만들어 for문의 배열을 바꿔주었다.
3) count_list를 오름차순 정렬하여 값을 비교하기 쉽도록 하였다. 아래는 바뀐 배열이다.
- sort, sorted함수가 계속 헷갈린다.. count_list.sort(reverse=True)
[[1, 1], [2, 1], [3, 3], [4, 1]]
count_list.sort(reverse=True)
print(count_list)
[[3, 3], [1, 4], [1, 2], [1, 1]]
4) 맨 앞의 2개만 검증해줘도 충분하다 생각되어 함수를 이렇게 작성하였다.
if count_list[0][0] == count_list[1][1]:
answer = -1
else:
answer = count_list[0][1]
print(answer)
5) array에 1개의 값이 올 때 오류가 생겼다. 그래서 전체 식에 아래 조건을 추가해주었다.
if len(array) == 1:
answer = array[0]
else:
array_set = list(set(array))
count_list = []
if len(array) == 1:
answer = array[0]
else:
for i in array_set:
count_list.append([array.count(i), i])
count_list.sort(reverse=True)
if count_list[0][0] == count_list[1][0]:
answer = -1
else:
answer = count_list[0][1]
return answer
3. 문제가 정답에 통과하지 못했다.. 광운님과 근혜님께 sos를 했다.
광운님이 array = [1,1,1] 과 같은 식의 오류를 발견해주셨다. (감사합니다..!!!)
* 오류가 생겼을 때는 '테스트 케이스 추가하기' 를 적극 활용하자! (ex. 값을 넣을 때는 맨 처음 값과 맨 끝의 값을 먼저 넣어보자. 본 값에서는 1-99, 0 등이 되겠다. 여기서도 풀리지 않는다면 제야의 고수님들께 sos를 요청하자)
* 입출력 예시 = n , def solution(n) n을 항상 대입해두고 경우의 수를 찾아나가자. 예시에만 잘 맞아떨어져도 일단은 합격! (최qkfsha은 그것또한 뚫어버렸다... )
4. 새로 발견한 array = [1,1,1] 경우의 오류를 잡아보자.
문제를 풀다가 챗 GPT에게 하소연을 해봤다..
지피티야 공부 파트너로서는 최고이지만 위로는 잘 못하는구나..?
'Back > TIL' 카테고리의 다른 글
04.06. 장고 개인 프로젝트 : 무신사 재고 관리 시스템 만들기 (0) | 2023.04.06 |
---|---|
04.05. 페어프로그래밍 시작! (0) | 2023.04.05 |
04.04. 본격 Django 실습 / Window PyCharm 인코딩 오류 (0) | 2023.04.04 |
04.03. Django 초급 수업 시작! (0) | 2023.04.03 |
💫 03.31. class 팀 과제 (고도화된 턴제 rpg 게임 제작) 제출 및 해설 + update_04.04 (0) | 2023.04.01 |