Notice
														
												
											
												
												
													Recent Posts
													
											
												
												
													Recent Comments
													
											
												
												
											
									| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 
													Tags
													
											
												
												- springboot
 - aws
 - Elasticsearch
 - Spring
 - JPA
 - 프로그래밍문제
 - 백트래킹
 - 코드업
 - 알고리즘
 - 스프링
 - 카프카
 - 클라우드
 - VPC
 - 개발
 - gcp
 - 스프링부트
 - 오일러프로젝트
 - 로드밸런서
 - Apache Kafka
 - Docker
 - 클라우드 컴퓨팅
 - Spring Boot
 - 쿠버네티스
 - 자료구조
 - DFS
 - 머신러닝
 - 스프링 부트
 - Kafka
 - 백준
 - Spring Data JPA
 
													Archives
													
											
												
												- Today
 
- Total
 
GW LABS
[Backjoon] 저울 본문
백준 2437번 저울 문제는 정렬을 이용해서 풀 수 있는 그리디 알고리즘 문제이다. 주어진 추들을 정렬하고 추들을 이용해서 만들 수 없는 무게의 최소값을 찾는 문제이기 때문에 역순으로 정렬하여 접근했다. 처음 풀이에서는 최소값을 1씩 늘려가면서 순회하느라 시간초과가 발생했다. 그러나 추들의 무게를 더해주면서 최소값을 찾으면 정답을 얻을 수 있다.
아래는 풀이법이다.
import sys
if __name__ == "__main__":
    cases = int(sys.stdin.readline())
    weight = list(map(int, sys.stdin.readline().split(" ")))
    weight.sort(reverse=True)
    num_check = 1
    while True:
        target = num_check
        for idx in range(cases):
            if weight[idx] == target:
                target -= weight[idx]
                
                # 최소값을 찾을 때 추의 무게를 더해준다.
                num_check += weight[idx]
                break
            elif weight[idx] < target:
                target -= weight[idx]
        if target > 0:
            break
    print(num_check)
'Algorithm & DataStructure' 카테고리의 다른 글
| [Backjoon] 통나무 건너뛰기 (0) | 2020.12.13 | 
|---|---|
| [Backjoon] 톱니바퀴 (0) | 2020.12.10 | 
| [Backjoon] 영역 구하기 (0) | 2020.11.30 | 
| [Backjoon] 단어 뒤집기 2 (0) | 2020.11.26 | 
| [Backjoon] 섬의 개수 (0) | 2020.11.18 | 
			  Comments