2시간 반쯤 고민했는데 모르겠네요.
어디서 봤는데, 알고리즘 문제는 고민해봐야하는건 맞지만
너무 고민만한다고 답이 나오진않는경우가 많다고
나중엔 답을 보고 넘어가는게 낫다고하길래 답을 보고싶은데..
이 사이트가 문제를 풀어야 답을 보여줘서 답을 볼수가없네요.
문제 내용은
Sort the given iterable so that its elements end up in the decreasing frequency order, that is, the number of times they appear in elements. If two elements have the same frequency, they should end up in the same order as the first appearance in the iterable.
iterable 을 받아서 그 iterable 안에 있는 원소들의 갯수가 많은 순서대로 정렬하는문제에요.
[4,6,2,2,2,6,4,4,4] 를 받을경우
[4,4,4,4,2,2,2,6,6] 가 됩니다.
만약 원소의 갯수가 같은 원소가 두개 이상일경우, 원소 갯수대로 정렬하되 같은 원소의 갯수를 가진 원소는
원래 받았던 iterable의 순서로 정렬해요.
[4,6,2,2,6,4,4,4] 를 받으면
[4,4,4,4,6,6,2,2] 로 반환합니다.
너무어려워요..
일단 제가 시도해본 코드를 참고삼아 올려둘게요.
첨부파일에 메모장으로도 첨부했어요.
복붙은 안했어요 뭔가 읽기싫어하실거같아서
혹시 요청하시면 복붙할게요..
참고로 제가생각했던 방법은 리스트에서 같은원소끼리 묶어서 여러개의 리스트를만들고 그 리스트들을 길이가 제일긴것부터 정렬시키는방법을 생각했어요 - dc App
입력 들어오는 범위도 명시 좀... 이걸로도 해답은 내줄수 있겠지만 입력이 최대 어디까지 얼마나 들어오냐에 따라 푸는방법 달라질수도 있어서 그냥 문제 url 링크해주거나 캡쳐하는게 나을듯 - dc App
문제 url은 이 사이트가 로그인을 해야해서 귀찮으실거같고 캡쳐한걸로다가 글 다시쓸게여
ps갤로
조건 아무것도 없는거면 걍 해쉬맵쓰면 좁밥으로 끝낼수 있을거같은데
뭘 써라 하는 조건은없고 그냥 아웃풋만 똑바로나오면 되요. 대신에 테스트코드를 많이돌려요. 여러가지케이스로
걍 무식하겐 value, frequency, inputorder 세개를 묶은 클래스를 만들고, 그 클래스 모은 list나 ordered set(value로 order) 만든담에, input값마다 value 있으면 frequency늘리고 없으면 현재index랑 frequency 1을 새로 추가, 마지막에 frequency-inputorder순으로 정렬
해쉬 두개면 되잖아