티스토리 뷰
https://programmers.co.kr/learn/courses/30/lessons/42746?language=cpp#
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
이 문제는 처음에 순열을 만들어서 때려박는 브루트포스로 풀었다가 시간초과가 났다.
벡터의 길이는 10만까지 가능하고, 문자열인 원소 하나의 길이는 4자리까지 가능하므로 생각해보면 당연히 브루트포스로 안되는데, 백준과 다르게 처음에 시간제한이 안써있다보니 시간을 고려안하고 풀어버렸다.
다음으로 생각한건 그리디 방법으로 앞자리부터 비교해서 정렬하는 방법이다.
그런데 이방법은 자릿수가 다를때 처리방법을 애를 먹었는데
결론적으로 두 문자열 a,b를 a+b한 문자열과 b+a한 문자열을 비교하면 된다.
'PS' 카테고리의 다른 글
| 프로그래머스. 게임 맵 최단거리 (0) | 2021.09.29 |
|---|---|
| 프로그래머스. 다리를 지나는 트럭 (0) | 2021.09.29 |
| 프로그래머스. 타겟 넘버 (0) | 2021.09.28 |
| 프로그래머스. 위장 (0) | 2021.09.27 |
| 프로그래머스. 더 맵게 (0) | 2021.09.27 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- C++
- 이분탐색
- DP
- Dijkstra
- Python
- permutation
- MVC
- Spring
- Kruskal
- C
- 재귀
- graph
- CSS
- binary search
- Unity
- Stack
- two pointer
- dfs
- Brute Force
- db
- BFS
- Tree
- 조합
- 자료구조
- priority queue
- floyd warshall
- back tracking
- Implementation
- recursion
- greedy
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함
