<Algorithm> 168. 큰수만들기(Programmers)
by BFine반응형
1. 큰수만들기(Programmers)
사용 알고리즘 : 그리디
-
오랜만에 그리디 문제를 풀었는데 확실히 그리디는 규칙을 찾아내는것이 필요한것 같다.
char 배열은 new String(char)로 문자열로 변경이 가능하다.
문제에 대한 접근&생각
- 문자열을 탐색하면서 각 순서마다 큰수를 구해야함 -> 그리디
다른 방법 풀이
Stack을 이용해 크기비교를 통해서 가장 큰수가 되는 문자열을 쌓는다.
내 코드
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 | class Solution { public static void main(String[] args) { System.out.println(solution("784542123132813531535156541313", 2)); } public static String solution(String number, int k) { int resLen = number.length() - k; /****************************** * 문자열을 탐색하면서 가장 큰 수를 판단하는 * 그리디를 이용하여 답을 출력한다. *******************************/ if(number.charAt(0) == '0') return "0"; char[] nums = number.toCharArray(); int start_idx = 0; StringBuilder sb = new StringBuilder(); while (resLen > 0) { int max = -1; int max_idx = 0; for(int i = start_idx; i <= nums.length-resLen; i++){ if(max < nums[i]-'0') { max = nums[i]-'0'; max_idx = i; } } start_idx = max_idx+1; sb.append(max); resLen--; } return sb.toString(); } } | cs |
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 170. 단속카메라(Programmers) (0) | 2019.04.18 |
---|---|
<Algorithm> 169. 구명보트(Programmers) (0) | 2019.04.18 |
<Algorithm> 167. 가장 먼 노드(Programmers) (0) | 2019.04.17 |
<Algorithm> 166. 징검다리(Programmers) (0) | 2019.04.16 |
<Algorithm> 165.무선충전(SWExpert) (0) | 2019.04.10 |
블로그의 정보
57개월 BackEnd
BFine