알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.
---------------
뭔가 파이썬으로 하면 쉬울 것 같은데 난 일단 c++로 연습 중이라 c++로 짰다
직전에 풀었던 문제와 비슷하게 풀었다
1. map<단어, 단어의 길이> 로 구현, 단어는 중복되면 빼면 되니까. 어차피 단어의 길이도 똑같으므로 뭐가 덮어씌워지든 상관은 없다.
2. 입력 단어와 그 길이(length())를 구해서 map에 넣는다.
3. 이걸 다시 vector에 넣는다. 단, 단어의 길이 순서대로 넣어야 하므로 vector<단어의 길이, 단어> 로 push_back 한다.
4. sort해서 단어 길이 순서대로 정렬. 근데 같은 길이면 영어 단어 사전 순으로 정렬해야 하는 조건도 있는데, 딱히 뭐 안건드려도 돌아가더라. 왜그런거지..?
5. vector의 두번째값만 출력한다
'Coding > 코딩테스트' 카테고리의 다른 글
#67256 키패드 누르기 (0) | 2021.07.17 |
---|---|
#12926 시저 암호 (0) | 2021.02.17 |
#17677 뉴스 클러스터링 (0) | 2020.11.05 |
#13414 수강신청 (0) | 2020.10.29 |
#12945 피보나치 수열 (0) | 2020.10.29 |