[문제 설명]
머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때,
7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.
[제한사항]
1 ≤ array의 길이 ≤ 100
0 ≤ array의 원소 ≤ 100,000
[입출력 예]
array result
[7, 77, 17] 4
[10, 29] 0
[입출력 예 설명]
입출력 예 #1)
[7, 77, 17]에는 7이 4개 있으므로 4를 return 합니다.
입출력 예 #2)
[10, 29]에는 7이 없으므로 0을 return 합니다.
[나의 풀이]
from collections import Counter
def solution(array):
return Counter(''.join(map(str, array)))['7']
[ list를 문자열로 바꾸기 (숫자가 없는 경우) ]
# String.join()으로 리스트의 모든 요소들을 하나의 문자열로 변환
list = ['a','b','c']
result = ' '.join(list)
result
Out[1]:
'a b c'
[ list를 문자열로 바꾸기 (숫자가 있는 경우) ]
# list안에 숫자가 있는 경우 아래와 같이 쓰면 에러가 발생
list = ['a',7,'c']
result = ' '.join(list)
result
----------------------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-25-02ffb3805567> in <cell line: 2>()
1 list = ['a',7,'c']
----> 2 result = ' '.join(list)
3 result
TypeError: sequence item 1: expected str instance, int found
> list를 join할 때는 string이 들어가야 하는데 int가 들어가서 에러가 발생하였다.
따라서 list안에 숫자가 있을 경우 아래와 같이 써야 한다.
# join() 사용할 때
list = ['a',7,'c']
result = ' '.join(str(i) for i in list)
result
Out[2]:
'a 7 c'
# map() 사용할 때
list = ['a',7,'c']
result = ' '.join(map(str, list))
result
Out[3]:
'a 7 c'
[다른 사람 풀이]
def solution(array):
return str(array).count('7')
> 나도 count를 사용해서 풀어보았는데.. 왜 안되었을까?
생각해보자.
[내가 풀었을 때]
array = [7,77,17]
array.count('7')
Out[3]:
0
> '0' 이 나온 이유
count 함수는 문자열에서 쓰이는 메서드이기 때문에 0이 나왔다.
.count(찾을 값, start, end)
[count의 특징]
- 대소문자를 구분함
- 찾을 값에 문자 한개 또는 문자열을 넣음
- 찾을 값의 범위 : start <= x < end
- 범위를 안쓴다면 문자열 처음부터 끝까지 탐색
예) .count(찾을 값)
> 따라서 count를 사용한다면 array를 str(문자열)로 바꾼 후 count 써야 한다.
array = [7,77,17]
str(array).count('7')
Out[4]:
4
'Test > python' 카테고리의 다른 글
세균 증식 (비트 연산자: <<, >>, &, | ) (0) | 2023.04.04 |
---|---|
문자열 정렬하기 (2) (sorted() 사용) (0) | 2023.04.04 |
잘라서 배열로 저장하기 (filter) (0) | 2023.04.02 |
연속된 수의 합 (0) | 2023.04.02 |
종이 자르기 (0) | 2023.03.30 |