728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12938
나의 풀이
자연수 n개로 이뤄진 중복 집합이 있을 때, 각 원소의 합이 s이면서 각 원소의 곱이 제일 큰 원소 집합을 찾아야 함
n | s | set | best |
2 | 9 | {1,8},{2,7},{3,6},{4,5} | {4,5} |
단순히 s를 n으로 나누었을 때 몫의 값과 각 원소의 값들이 같거나 1씩 커야 된다고 생각함
이 아이디어를 바탕으로 코드를 작성함
1. s%n != 0 일 때, s//n에 1을 더해 n개의 배열을 만들어줌
2. 생성된 n개의 배열에서 (d_share(몫)*n)-1 만큼의 for문을 돌려 1씩 빼줌
sort를 안 해주는 이유는 앞에서부터 1씩 빼주기 때문에 자동으로 sort가 됨
def solution(n, s):
answer = []
if n>s:
return [-1]
if s%n == 0:
answer=[s/n for _ in range(n)]
else:
d_share = s//n + 1
answer = [ d_share for _ in range(n)]
for i in range((d_share*n)-s):
answer[i] -= 1
return answer
다른 사람의 풀이
나의 풀이는 나머지 없이 몫을 구해 s//n +1 값을 넣어주고 그다음 나머지에 맞게 1을 빼줬음
다른 사람의 풀이는 몫과 나머지를 구해서 몫은 s//n +1 한 값을 나머지는 s//n 한 값을 넣어주어 해결함
def solution(n, s):
if s < n:
return [-1]
answer = []
for _ in range(n - s % n):
print(s // n)
answer.append(s // n)
for _ in range(s % n):
print(s//n+1)
answer.append(s // n + 1)
return answer
나머지만큼 1을 빼준다는 것을 빨리 알았다면 이렇게 코드를 짰을 텐데,, 다음에는 바로 코드 작성하지 말고 상관관계에 대해서 더 생각해 봐야겠다.
728x90
'Coding Test > programmers' 카테고리의 다른 글
[Python] 파이썬 프로그래머스 주식가격 (1) | 2023.03.31 |
---|---|
[Python] 파이썬 프로그래머스 다리를 지나는 트럭 (0) | 2023.03.31 |
[Python] 파이썬 프로그래머스 2차원 동전 뒤집기 (0) | 2023.03.20 |
[Python] 파이썬 프로그래머스 뉴스 클러스터링 (0) | 2023.03.10 |
[Python] 파이썬 프로그래머스 프린터 (0) | 2023.03.09 |