알고리즘/프로그래머스

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

2021. 1. 26. 17:11
728x90
반응형
 

문제 설명

자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 집합으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다.

1.각 원소의 합이 S가 되는 수의 집합

2.위 조건을 만족하면서 각 원소의 곱 이 최대가 되는 집합

예를 들어서 자연수 2개로 이루어진 집합 중 합이 9가 되는 집합은 다음과 같이 4개가 있습니다.

{ 1, 8 }, { 2, 7 }, { 3, 6 }, { 4, 5 }

그중 각 원소의 곱이 최대인 { 4, 5 }가 최고의 집합입니다.

집합의 원소의 개수 n과 모든 원소들의 합 s가 매개변수로 주어질 때, 최고의 집합을 return 하는 solution 함수를 완성해주세요.

제한 사항

-최고의 집합은 오름차순으로 정렬된 1차원 배열(list, vector) 로 return 해주세요.

-만약 최고의 집합이 존재하지 않는 경우에 크기가 1인 1차원 배열(list, vector) 에 -1 을 채워서 return 해주세요.

-자연수의 개수 n은 1 이상 10,000 이하의 자연수입니다.

-모든 원소들의 합 s는 1 이상, 100,000,000 이하의 자연수입니다.

입출력 예

n

s

result

2

9

[4, 5]

2

1

[-1]

2

8

[4, 4]

입출력 예 설명

입출력 예#1

문제의 예시와 같습니다.

입출력 예#2

자연수 2개를 가지고는 합이 1인 집합을 만들 수 없습니다. 따라서 -1이 들어있는 배열을 반환합니다.

입출력 예#3

자연수 2개로 이루어진 집합 중 원소의 합이 8인 집합은 다음과 같습니다.

{ 1, 7 }, { 2, 6 }, { 3, 4 }, { 4, 4 }

그중 각 원소의 곱이 최대인 { 4, 4 }가 최고의 집합입니다.

접근법

곱이 가장 커지는 순간만 안다면 엄청 간단한 문제입니다. 곱이 가장 커지는 순간은 나온 숫자들의 차이가 중심값에 가장 가까울 때 입니다! 즉, 8이 2개의 집합으로 나눠진다고 하면 (1,8)보다 (4,4)가 더 곱이 큽니다! 이를 이용해서 코드를 짜보면, 먼저 숫자s와 집합의 개수 n을 나누어서 중심이 되는 값을 찾고, 나누어 떨어진 경우 그 집합을 리턴해주고, 아닐 경우에는 나머지만큼 중심값에 1을 더해서 리턴해 주면 됩니다! 즉, s는 15, n이 4로 입력받았을 경우 15/4 = 4..1입니다. [4,4,4] + [4+1]인 [4,4,4,5]를 리턴해 주시면 됩니다!

​

나의 코드

def solution(n, s):
    if s-n < 0: return [-1]
    value, remainder = divmod(s,n)
    answer = [value]*(n-remainder) + [value+1]*remainder
    return answer

​

반응형

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[프로그래머스] 기지국 설치  (0) 2021.01.27
[프로그래머스] 숫자 게임  (0) 2021.01.26
[프로그래머스] [1차]추석 트래픽  (0) 2021.01.26
[프로그래머스] 종이접기  (0) 2021.01.26
[프로그래머스] 줄 서는 방법  (0) 2021.01.26
'알고리즘/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] 기지국 설치
  • [프로그래머스] 숫자 게임
  • [프로그래머스] [1차]추석 트래픽
  • [프로그래머스] 종이접기
컴공누나
컴공누나
ML 엔지니어 컴공누나입니다:) wodbs9522@gmail.com
컴공누나의 지식 보관소ML 엔지니어 컴공누나입니다:) wodbs9522@gmail.com
컴공누나
컴공누나의 지식 보관소
컴공누나
전체
오늘
어제
  • 분류 전체보기 (267)
    • 컴공누나 소개 (2)
    • 언어 마스터 (4)
      • 파이썬 (4)
    • 알고리즘 (159)
      • 프로그래머스 (120)
      • 백준알고리즘 (39)
      • 알고리즘기초 (0)
    • 인공지능공부 (62)
      • 인공지능기본지식 (6)
      • LLM (3)
      • 인공지능기초수학 (9)
      • 프레임워크 (2)
      • 자연어처리 (16)
      • 컴퓨터비전 (2)
      • 그래프 (24)
      • Prolog (0)
    • 다른 분야 (4)
      • Docker (1)
      • Web (3)
    • 논문 (10)
      • 논문리딩 (6)
      • 게제논문 (4)
    • 꿀팁 (19)
      • 오류 정리 (8)
      • 소소한 팁 (11)

블로그 메뉴

  • 홈
  • 태그
  • 글쓰기
  • 관리

공지사항

인기 글

태그

  • 그래프강의
  • stanfordgnn
  • 백준
  • Bert
  • 파이썬
  • nlp
  • 영상기반상식추론
  • GPT
  • 자연어처리
  • stanfordgraph
  • 선형대수
  • selfattention
  • cs224w
  • 그래프
  • GNN
  • 스탠포드그래프
  • 그래프신경망
  • 선형대수기초
  • 프로그래머스
  • transformer

최근 댓글

최근 글

글쓰기 / 관리자
hELLO · Designed By 정상우.
컴공누나
[프로그래머스] 최고의 집합
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.