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 | 31 |
Tags
- Vue
- Java
- 프로그래머스
- 오라클
- 생성
- 자바
- kotlin
- 알고리즘
- JavaScript
- 방법
- 넥사크로
- aws
- 함수
- mybatis
- Git
- 쿼리
- Spring
- oracle
- error
- 코틀린
- GitHub
- Eclipse
- db
- jquery
- JPA
- Security
- 스프링
- 에러
- IntelliJ
- 시큐리티
Archives
- Today
- Total
송민준의 개발노트
가장 큰 수 본문
programmers.co.kr/learn/courses/30/lessons/42746
문제가 쉬운 것 같으면서도 조금 헷갈림
규칙을 찾아내서 정렬 후 합쳐서 리턴.
마지막 11번 케이스가 실패해서 뭔가 봤더니
[0, 0, 0, 0, 0]으로 들어온 경우임.
마지막에 리턴 시에 해당케이스 체크함.
/**
* 프로그래머스 lv2
* 가장 큰 수
* 1. 배열의 값을 string으로 변환 후
* 2. 비교하고자 하는 값이랑 더해서 숫자형으로 파싱하고 비교해서 정렬
* 3. 정렬된 것을 합침
* - 0으로만 들어온 경우가 있음.(return시 삼항)
*/
public class LargestNumber {
public String solution(int[] numbers) {
String result = Arrays.stream(numbers)
.mapToObj(String::valueOf)
.sorted((a, b) ->
Integer.parseInt(b + a) - Integer.parseInt(a + b))
.collect(Collectors.joining());
return (result.indexOf("0") == 0) ? "0":result;
}
}
정렬 규칙은 앞뒤 값을 각각 더해보고 둘 중에 큰 값이 앞에 오게 함
테스트 코드
import org.junit.Test;
import static org.junit.Assert.*;
public class LargestNumberTest {
@Test
public void solution() {
//given
int[] numbers = {6, 10, 2};
//when
LargestNumber ln = new LargestNumber();
String result = ln.solution(numbers);
//then
assertEquals("6210", result);
}
@Test
public void solution2() {
//given
int[] numbers = {3, 30, 34, 5, 9};
//when
LargestNumber ln = new LargestNumber();
String result = ln.solution(numbers);
//then
assertEquals("9534330", result);
}
@Test
public void solution3() {
//given
int[] numbers = {0, 0, 0, 0, 0};
//when
LargestNumber ln = new LargestNumber();
String result = ln.solution(numbers);
//then
assertEquals("0", result);
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 로또의 최고 순위와 최저 순위 (0) | 2021.11.02 |
---|---|
프로그래머스 조이스틱 (0) | 2021.02.15 |
프로그래머스 HIndex (0) | 2021.02.07 |
프로그래머스 큰 수 만들기 (0) | 2021.02.04 |
프로그래머스 다리를 지나는 트럭 (0) | 2021.02.03 |