티스토리 뷰
프로그래머스) 가장 큰 수
간단해보이지만 생각보다 어려웠던 문제다.
numbers원소는 다행히 1000까지지만 갯수가 10만개까지 들어올수있어,
의외의 테스트케이스가 굉장히 많이 생긴다.
알고리즘으로 각 경우를 나눠 논리적으로 풀다가 너무 복잡해
결국 기본 sort함수를 이용. 물론 Comparator는 override해서.
나와 비슷하지만, compare함수를 이용하면 라인수가 살짝 더 줄어들긴함. 가독성은 나처럼 풀어쓰는것이 더 나은것 같다.
나는 "0000...0"->"0" 필터링을 하기위해, string의 모든 각 자리를 검사후 0이 아닌수를 만나면 for문 탈출후 return하게하고, 모든 자리가 0으로 판별나면 "0"을 리턴하게 했다.
위의 방법처럼 한다면, 첫자리만 검사해서 해결할수있다.
성능상 큰차이는 없겠으나, 큰수부터 정렬되니 당연히 이 방법이 더 적합하고 간결하다.
사이트의 마지막 TestCase는 "000...0"으로 추정. 해당로직 추가하니 통과.
사이트의 1-6 TestCase는 0이 많이 들어간 경우로 추정.
if(Integer.parseInt(answer)==0) {
answer = "0";
}
처음엔 위와 같이 "000...0"을 필터링하려다, 1-6과 같이 길이가 매우 길어지는 경우는 parseInt가 제대로 동작하지 않음을 깨닫고 현재의 코드로 수정.
많은 사람들이 각 경우의 비교와 로직을 설계하기보단, 나처럼 sort와 Comparator를 이용하고있어
애초에 문제출제의도가 이런게 아니었나 생각들기도함.
'Algorithm_Q' 카테고리의 다른 글
프로그래머스) 모의고사 (Brute-Force) (0) | 2019.09.13 |
---|---|
프로그래머스) 단어 변환 (DFS/BFS) (0) | 2019.09.13 |
프로그래머스) H-Index (Sort) (0) | 2019.09.13 |
프로그래머스) 다리를 지나는 트럭 (Queue) (0) | 2019.09.13 |
프로그래머스) 기능개발 (Queue) (0) | 2019.09.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- dfs
- webhacking.kr
- 해외여행
- mysql
- Android Studio
- 회고
- 리버싱
- JPA
- Java
- git
- bfs
- sort
- FRAGMENT
- Vo
- javascript
- Android
- 개발자
- 프로그래머스
- reversing
- C
- brute-force
- Algorithm
- socket
- queue
- OneToMany
- Stack
- 우아한 테크코스
- 웹해킹
- Data Structure
- graph
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함