본문 바로가기
프로그래밍 공부/알고리즘 공부

numCount 함수 프로그램 출력

by 응_비 2020. 11. 1.

7. numCount([1, 1, 2]) == 2 가 되는 numCount 함수를 구현하시오. (15)

numlist = [1, 1, 2]

def numCount(numlist):
	return len(set(numlist))

 

<힌트활용> 중복하는 문자열을 제거하는 방법 (set 활용 or join 활용)

Why set 원리를 적용?

2를 추출하는 함수 numCount()요소에 list[1, 1, 2]가 들어있음.

list[1, 1, 2]에는 1, 1이 두개가 들어있음. 즉 중복되어 있음.

set{ } => 중복을 허용하지 않음, 순서가 없음.

[-> 집합과 관련된 자료형-> set{} 함수에서는 indexing이나 slice를 사용할 수 없음.]

 

<set을 활용하여, 중복하는 문자열을 제거하는 방법>

#list를 set으로 변환해 중복값 삭제 숫자 타입
set([1,1,2,2,3,3,4,5])
#{1, 2, 3, 4, 5}


#list를 set을 변환해 중복값 삭제 문자열 타입
set(['a', 'a', 'b', 'b', 'c'])
#{'b', 'c', 'a'}

#숫자와 문자열 혼합 타입
set([1, 1, 'x', 'x'])
#{1, 'x'}

 <join 활용하여, 중복하는 문자열을 제거하는 방법>

a_str = 'aaaffggaahhaaaa'
a_uniquie = ''.join(set(a_str))
print(a_uniquie)
# hafg

ponyozzang.tistory.com/582

 

Python 리스트 중복 제거 set() 함수

파이썬에서 리스트에 중복된 요소를 삭제하고 싶은 경우를 알아보겠습니다. 리스트에 중복된 값을 제거하는 방법으로 set 함수를 많이 사용하는 경우도 있습니다. 하지만 set 함수로 중복 제거가

ponyozzang.tistory.com

 

<Idea 생각나는 것 정리>

O 1) return len(str(num)) - len(str(num).rstrip('0'))

-> .strip('1') 활용하기.

srt(numCount).strip('1')을 통해서 요소제거하기.

numCount([1, 1, 2]) == 2

numlist = [1, 1, 2]
def numCount(numlist):
	return str(numlist).lstrip('1')

 

X 2) if-else 활용해서 적용알고리즘 생각(If n=2이면 print, else:면 {}빈함수 print)

 

O vs X 3) list Index 적용해서 2 추출

numCount([1, 1, 2]) == 2 
numlist = [1, 1, 2]
return numlist[2]
>>> a = [123, 421, 212, 11, 24, 102, 29, 92, 10]
>>> a.index(421)
1

 

O 4) list max 최댓값 적용해서 2 추출

numCount([1, 1, 2]) == 2

numlist = [1, 1, 2]
def numCount(numlist):
	maximum = 0
	for num in numlist:
    	if maximum <= num:
           maximum = num
    return maximum
           

 

X 5) 짝수일 경우 출력, 

for num in numCount:

if 2% == 0

하지만, 무조건 2가 나오게 만드는게 목적이므로 빈함수가 나오면 안된다.

# numCount([1, 1, 2]) == 2가 되도록하기.
<list를 인자로 받고, return 문은 존재하지 않는 함수> p. 290
numlist = [1, 1, 2]
def numCount(numlist):
	if numlist %2 == 0:
    	print('2')
    else:
    	print({})

 

O vs X 6) 리스트 요소 끄집어내기

pop(x) : x번째 요소를 돌려주고, 그 요소는 삭제한다.

set으로 중복 허용 없애고, pop으로 '1'요소를 끄집어낸다.?

numCount([1, 1, 2]) == 2
numlist = [1, 1, 2]
	list(set(numlist)) = {1, 2} 
    # 근데 set은 index가 성립이 안되는데, pop이 성립될까?
    # 중복 값을 제거하고 싶은 리스트 변수를 list(set(변수)) 형태로 작성
    return numlist.pop(0) = 2 
pop(x)는 리스트의 x번째 요소를 돌려주고 그 요소는 삭제한다.

>>> a = [1,2,3]
>>> a.pop(1)
2
>>> a
[1, 3]
a.pop(1)은 a[1]의 값을 끄집어낸다. 다시 a를 출력해 보면 끄집어낸 값이 삭제된 것을 확인할 수 있다.

 

6.2 set= {}, 순서x, 원소의 중복x (indexing, slice 연산 불가능)

6.2.1 set형의 생성

6.2.2 set형의 함수 및 연산자 사용

set{ }

집합과 관련된 것들()을 쉽게 처리하기 위해 만든 자료

(int, float, string, list, type형 등 모든 자료형 가능)

1) set형은 중복을 허용하지 않는다.

2) set형은 순서가 없다.

 

힌트 :

하나의 빈 리스트 만들어서, 그 리스트에 이 값이 있냐고 묻는 함수를 쓰고

없으면 리스트에 추가.

그리고 마지막에 len 활용해서 리스트 길이를 재면 됨.

 

wikidocs.net/14

댓글