티스토리 뷰

문제 설명

머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.


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

 

입출력 예
array  :  result
[7, 77, 17] 4
[10, 29] 0

* 첫 번째 생각

def solution(array):
    answer = 0
    for i in range(len(array)):
        if array[i]%10 == 7:
            answer += 1
        if (array[i]%100 - array[i]%10)/10 == 7:
            answer += 1
        if (array[i]%1000 - array[i]%100)/100 == 7:
            answer += 1
        if (array[i]%10000 - array[i]%1000)/1000 == 7:
            answer += 1
        if (array[i]%100000 - array[i]%10000)/10000 == 7:
            answer += 1
    return answer​

아따.. 길다...

아무 함수도 모르는 상태에서 생각할 수 있는 풀이.

각 자리의 숫자가 7인지 확인해서 풀기

 

1의 자리수  = 주어진 수를 10으로 나눈 나머지 = %10

10의 자리수 = 주어진 수를 100으로 나눈 나머지에서 10으로 나눈 나머지를 뺀 수 나누기 10 = (%100 - %10)/10

100의 자리수 = 주어진 수를 1000으로 나눈 나머지에서 100으로 나눈 나머지를 뺀 수 나누기 100 = (%1000 - %100)/100

1000의 자리수 = 주어진 수를 10000으로 나눈 나머지에서 1000으로 나눈 나머지를 뺀 수 나누기 1000 = (%10000 - %1000)/1000 

10000의 자리수 = 주어진 수를 100000으로 나눈 나머지에서 10000으로 나눈 나머지를 뺀 수 나누기 10000 = (%100000 - %10000)/10000

각 경우의 수가 7일 경우 answer값을 하나씩 증가

 

* 두 번째 생각

숫자를 문자화 하고 각 문자 하나하나에서 '7'을 카운트 

def solution(array):
    return sum(list(str(arr)).count('7') for arr in array)
테스트 1
입력값 [7, 77, 17]
기댓값 4
실행 결과 테스트를 통과하였습니다.
테스트 2
입력값 [10, 29]
기댓값 0
실행 결과 테스트를 통과하였습니다.
테스트 3
입력값 [99977, 27, 77779, 7]
기댓값 8
실행 결과 테스트를 통과하였습니다.

 

 

cf. str,  list

 

 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
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
글 보관함