2020년 6월 21일 일요일

[프로그래머스] 가장큰수

쉬운줄알았는데 쉽게 안되넹...

문제 설명

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.

예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.

0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.

제한 사항
  • numbers의 길이는 1 이상 100,000 이하입니다.
  • numbers의 원소는 0 이상 1,000 이하입니다.
  • 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
입출력 예
numbersreturn
[6, 10, 2]6210
[3, 30, 34, 5, 9]9534330


추가 주석

대기업 다닌애들한테 문제 풀어보라고 부탁을 해봤습니다.

결론부터 말씀드리자면 대기업 다니는 애들도 왜 1~6 테케 실패하는지 모르겠다고 하네요. 제 최고 점수는 7~11 맞은게 최고 점수이고 아래 코드는 최신 버전이고 테케 11 과 10 실패하는 버전입니다. 일단은 Google, Microsoft 다닌애들한테도 풀어보라고 부탁하였고 개들도 못푸는 문제이면 프로그래머스가 정말 어려운 문제를 만들었거나 아니면 문제 자체에 문제가 있거나.
대기업 다니는애들이 이문제에 대에 지적한 부분은

  1. 일단 가장 문제있는 문제에 대에서 지적하자면 테케 11 경우 0000 경우 0 을 리턴을 해야합니다.
  2. 문제에 테케가 부족합니다.
  3. 모든 경우의 수를 프로그래머가 생각을 해야합니다.
  4. 마지막은 다 동의 하실거라 생각하네요. 자기가 무슨 테케를 틀렸는지 안말해준다는점

비록 영문이지만 적어도 테케 어디서 틀렸는지 말해주고 무슨 테케에서 fail 이 떴는지 나오는 사이트입니다. 또 미국 대기업들이 콘테스트 같은걸 할때 가장 많이 사용하는 사이트입니다. https://leetcode.com/explore/ 0% 숫자가 있는게 무료버전입니다 나머지는 유로이고요. 돈내고 굳이 푸실 필요까지는 없을거에요.

작성하고있던 코드는 더이상 시도는 무의미한거 같에서 포기하고. 다른분들이 필요할만한 Comparator 만 가져다 쓰세요. Comparator String 속성상 o1 이 항상 큰 숫자입니다 따라서 항상 o1 이 더 큰수를 지니고 있을거에요.



댓글 없음:

댓글 쓰기

git rejected error(feat. cherry-pick)

 문제 아무 생각 없이 pull을 받지않고 로컬에서 작업! 커밋, 푸시 진행을 해버렷다. push에선 remote와 다르니 당연히 pull을 진행해라고 하지만 로컬에서 작업한 내용을 백업하지 않고 진행하기에는 부담스럽다(로컬작업 유실 가능성) 해결하려...