본문 바로가기
WIL&TIL/TIL

20230420 TIL 알고리즘 - k의 개수, 2차원으로 만들기

by 코드뭉치 2023. 4. 20.

알고리즘

 

k의 개수

i부터 j까지 k가 몇개인지 찾는 문제

def solution(i, j, k):
    answer = 0
    for l in range(i, j+1):
        a = [x for x in str(l)]
        if str(k) in a:
            answer += a.count(str(k))
    return answer
    
# i부터 j까지 for in range
# 각각의 숫자 l에 대해 자릿수별로 분리한 문자열을 리스트에 담기
# ex) 13 => "13" => ["1", "3"]
# k가 해당 리스트에 있는지 확인하여 count()만큼 수량 올리기

 

map과 lambda를 활용해보기

def solution(i, j, k):
    return sum(map(lambda x: str(x).count(str(k)), range(i, j+1)))
    
# i부터 j까지 순회하면서 람다 함수 실행 map()
# 각 수를 문자열로 변환 str()
# 문자열에 k가 몇개인지 계산 lambda x: str(x).count(str(k))
# 횟수를 모두 더한다. sum()

 

리스트 컴프리헨션을 활용해보기

def solution(i, j, k):
    return sum([ str(i).count(str(k)) for i in range(i,j+1)])
    
# 각 정수마다 i부터 j까지 순회하면서 for i in range(i,j+1)
# 문자열로 변환 str(i)
# k가 몇개인지 계산 count(str(k))
# 구한 값을 더하기 sum([...])

 

 

 

2차원으로 만들기

num_list를 n개씩 잘라서 2차원으로 만들기

def solution(num_list, n):
    a = []
    for i in range(len(num_list) // n):
        a.append(num_list[n*i:n*(i+1)])
    return a

 

리스트 컴프리헨션으로 풀어보기

def solution(num_list, n):
    return [num_list[i:i+n] for i in range(0, len(num_list), n)]

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글