TIL

프로그래머스 덧칠하기, 소수만들기

우성팔 2023. 12. 12.

덧칠하기

https://school.programmers.co.kr/learn/courses/30/lessons/161989

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

벽의 길이 = n  / 롤러의 길이 = m / 페인트를 칠하기로 정한 구역들의 번호가 담긴 정수 배열 = section

 

def solution(n, m, section):
    answer = 0
    section_map = {x: i for i, x in enumerate(section)}
    i = 0
    while i <= n:
        if i in section_map:
            i += m-1
            answer += 1
        i += 1

    return answer

 

 


소수만들기

https://school.programmers.co.kr/learn/courses/30/lessons/12977

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

def solution(nums):
    answer = 0
    for a in range(len(nums)):
        for b in range(a+1,len(nums)):
            for c in range(b+1,len(nums)):
                num_sum , num_cnt= 0, 0
                i = 1
                num_sum = nums[a]+nums[b]+nums[c]
                while num_sum >= i:
                    if num_sum % i == 0:
                        num_cnt += 1
                    i += 1
                if num_cnt == 2:
                    answer += 1
    return answer

 

여러개의 for문과 while문을 쓰고 싶지 않고 combinations 내장함수도 안 쓰고 구하고 싶어서 머리를 굴려봤는데 떠오르지 않아 어쩔 수없이 써서 풀어버렸다 ..

 

다른 분들이 푼 방법을 보니 combinations를 많이 써서 푼거 같았고 combinations을 안 쓰고 푼 방법 중 내 코드에서 줄일 수 있는 부분이 있었던 코드는 아래의 코드였다

def solution(nums):
    answer = 0

    for i in range(len(nums)):
        for j in range(i+1, len(nums)):
            for k in range(j+1, len(nums)):
                number = nums[i] + nums[j] + nums[k]
                if len([m for m in range(2, number) if number % m == 0]) == 0:
                    answer += 1

    return answer

 

댓글