코테준비/프로그래머스

[프로그래머스] 최고의 집합 - Python

예찬예찬 2023. 9. 11. 20:57
728x90
반응형

링크: https://school.programmers.co.kr/learn/courses/30/lessons/12938

 

프로그래머스

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

programmers.co.kr

아이디어

  • s가 1이면 -1 넣고 리턴
  • 곱했을 때 가장 큰 수가 나오려면 곱하는 모든 수가 골고루 커야한다.
  • s를 n으로 나누고 나머지를 각 수에 뿌려준 수가 곱했을 때 가장 큰 수가 나온다.
  • 이 후 오름차순으로 리턴

구현

def solution(n, s):
    answer = []
    if s == 1:
        answer.append(-1)

    else:
        a = s//n
        b = s%n
        if b==0:
            for i in range(n):
                answer.append(a)
        else:
            for i in range(n):
                answer.append(a)
            for i in range(b):
                answer[i] += 1
        answer.reverse()
    return answer

음 한 테스트 케이스만 실패가 나온다...

오류 원인 분석

  • 이게 s가 1이면 안되는게 아니라 s가 n보다 작으면 불가능하다.
  • 첫 조건문만 바꿔주면 될 듯 하다.

구현

def solution(n, s):
    answer = []
    if s < n:
        return [-1]
    else:
        a = s//n
        b = s%n
        for i in range(n):
                answer.append(a)
        if b!=0:
            for i in range(b):
                answer[i] += 1
        answer.reverse()
    return answer

굿

마무리

  • 또또 문제 똑바로 안봤다.
  • ㅠㅠ
728x90
반응형