Post

[BoostCamp 8기 예상문제] 함수구현(python)

📌문제

Alt text

💪아이디어

  1. 배열 내 숫자 개수 세기
    배열 내의 숫자를 세기위하여 Counter함수를 사용하였다. 딕셔너리 자료구조처럼 key:value값으로 구성되어있으며 key는 배열내 요소의 값, value에는 해당 key가 배열 내 몇 개가 있는지 알려준다.

  2. 오름차순별로 중복된 숫자의 개수세기
    counter().keys()를 사용하여 오름차순으로 정렬 후 배열의 요소를 뽑을 수도 있지만 set을 사용해보았다. set은 중복된 값을 저장하지 않고 오름차순으로 요소들이 정렬되어있지않아 list로 형변환 후 정렬해줬다. 오름차순으로 정렬된 요소값들을 돌면서 counter의 value가 1이면 중복된 값이 없다고 판단하였고 1이상이면 중복된 값이 있다고 판단하였다.

  3. 배열 내 중복된 값이 없는 경우
    중복된 값의 갯수를 세는 배열이 비어있으면 주어진 배열에 중복된 값이 없다고 판단하여 -1을 넣어주고 반환해주었다.

🥂코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from collections import Counter
arr=list(map(int,input().split()))
element = sorted(list(set(arr)))
arr = Counter(arr)
answer=[]

for num in element:
    cnt =  arr[num] 
    if cnt!=1:
        answer.append(cnt)

if not answer: 
    answer.append(-1)
print(answer)
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.