Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 코틀린
- TDD
- algorithm
- programmers
- LEVEL2
- lambda
- 자바
- BFS
- kotlin
- OS
- 그래프
- DP
- 백트래킹
- 프로그래머스
- 모던자바
- 네트워크
- Spring
- baekjoon
- java
- 자료구조
- Java8
- 운영체제
- Brute-force
- DFS
- 스프링
- back-end
- backtracking
- 프로젝트
- 백준
- 알고리즘
Archives
- Today
- Total
요깨비's LAB
[프로그래머스, JAVA] 저울 본문
하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 합니다. 이 저울의 양팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같습니다. 또한, 저울의 한쪽에는 저울추들만 놓을 수 있고, 다른 쪽에는 무게를 측정하려는 물건만 올려놓을 수 있습니다.
저울추가 담긴 배열 weight가 매개변수로 주어질 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값을 return 하도록 solution 함수를 작성해주세요.
예를 들어, 무게가 각각 [3, 1, 6, 2, 7, 30, 1]인 7개의 저울추를 주어졌을 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값은 21입니다.
제한 사항
- 저울추의 개수는 1개 이상 10,000개 이하입니다.
- 각 추의 무게는 1 이상 1,000,000 이하입니다.
입출력 예
weightreturn
[3, 1, 6, 2, 7, 30, 1] | 21 |
1. 풀이 방법
이 방법은 구현능력이라기 보다는 아이디어에 어렸을때 추 가지고 영재교육 받았으면 유리했을듯한 문제 같네요..
시간초과로 검색해봤더니 결국 아이디어 문제였네요..
총합 0으로 초기화
1) 첫 번째 추 총합에 더하기 두번째 인덱스 부터 반복
2) 두 번째 인덱스부터 현재 인덱스가 가리키는 값이 총합 + 1과 같거나 작으면 총합에 더하기
BUT 크다면 반복문 종료 후 총합 + 1 반환
import java.util.Arrays;
class Solution {
public int solution(int[] weight) {
int total = 0;
int answer = 0;
Arrays.sort(weight);
int length = weight.length;
total = weight[0];
for(int i=1;i<length;i++) {
if(total+1 >= weight[i])
total += weight[i];
else
break;
}
answer = total + 1;
return answer;
}
}
'알고리즘(Java) > 프로그래머스' 카테고리의 다른 글
[프로그래머스, JAVA] 뉴스 클러스터링 (0) | 2021.06.14 |
---|---|
[프로그래머스, JAVA] 단체사진 찍기 (0) | 2021.06.05 |
[프로그래머스, JAVA] 피보나치 수 (0) | 2019.12.23 |
[프로그래머스, JAVA] 땅따먹기 (0) | 2019.12.16 |
[프로그래머스, JAVA] 올바른 괄호 (0) | 2019.12.13 |
Comments