2014년 11월 3일 월요일

[AlgoSpot] STRJOIN

  • 접근방법
    • 누계하는 비용을 최소화 하는 문제입니다.
    • 가장 비용이 적게 드는(크기가 작은 문자열) 2개를 합하여 새로운 비용을 등록하고 기존의 문자열크기 2개 삭제
    • 위를 반복하고 비용의 누적을 출력
  • 해결방법
    • 적은 문자열(비용)을 구하기 위하여 ArrayList를 이용하여 Sort를 사용
    • add, remove, get을 적절히 사용


 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
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class STRJOIN {

    public static void main(String[] args) {
     Scanner sc = new Scanner(System.in);
  int cases = sc.nextInt();
  while (cases-- > 0) {
   int n = sc.nextInt();
   ArrayList list = new ArrayList();
   for(int i = 0;n>i;i++)
    list.add(sc.nextInt());
   
   int tmp=0,cost=0;
   for(int i = 0;n-1>i;i++){
    Collections.sort(list);
    tmp=(int)list.get(0)+(int)list.get(1);
    cost+=tmp;
    list.add(tmp);
    list.remove(0);
    list.remove(0);
   }
   System.out.println(cost);
  }
    }
}

  • 취준생의 공부 정리 방입니다. algospot 게시물에서 문제 풀이에 대한 포스팅은 언제나 환영이라는 글을 보았기에 정리겸, 공부겸 겸사겸사 문제풀이를 올립니다. 저작권에 문제 있을시 자삭하겠습니다.
  • 엉터리일수도(아마도 대부분) 느리기도 하지만 풀었다는 것에 의의를 두고 있습니다.
  • 댓글 없음:

    댓글 쓰기