코테공부

프로그래머스 4일차 - 7의 개수

알면 알 수록 재밌다! 2023. 2. 17. 07:32
문제 설명
머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.

제한사항
1 ≤ array의 길이 ≤ 100
0 ≤ array의 원소 ≤ 100,000

입출력 예 설명
- 입출력 예 #1
    [7, 77, 17]에는 7이 4개 있으므로 4를 return 합니다.
- 입출력 예 #2
    [10, 29]에는 7이 없으므로 0을 return 합니다.

 

해설

def solution(array):
    answer = 0
    lst = []
    for cnt in array:
        cnt_lst=list(map(int, str(cnt)))
        lst.append(cnt_lst)

    one_demension_lst=sum(lst, [])

    for i in one_demension_lst:
        if i == 7:
            answer += 1

    return answer

우선 이 문제는 개수를 찾는 것이다

[7, 77, 17]에서 7의 개수를 찾으려면 여러 방법이 있겠지만,

int 요소를 다 1자리 문자열로 바꾸면 된다.

(또다른 방법은 앞자리 뒤자리 나누기 10해서 나머지 7나오는지 아닌지로 풀어도 된다)

 

 

 

    for cnt in array:
        cnt_lst=list(map(int, str(cnt)))
        lst.append(cnt_lst)

그래서 이와 같이 리스트 요소를 for문 돌려서 1개씩 받은다음

str 형태는 인덱스 요소 하나하나에 접근이 가능하므로 형변환 시키고 int형태로 다시 list에 담슴니다.

 

one_demension_lst=sum(lst, [])

for문을 3번 도니까 리스트가 3개가 생겼는데 그걸 또 리스트에 담았으니 2차원 리스트가 되었다.

2차원 리스트를 1차원 리스트로 변환시켜준다.

 

    for i in one_demension_lst:
        if i == 7:
            answer += 1

1차원 리스트에서 다시 for문을 돌려서 한자리 수가 된 요소들에 접근해서

7이 있으면 1개씩 카운팅을 해준다.