일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- DP
- 라인
- 스타벅스
- BFS
- 프로그래밍언어론
- 라인플러스
- spring
- 프로그래머스
- binary search
- STL
- 파이썬
- 모두를 위한 딥러닝
- leetcode
- 알고리즘
- 벤쿠버
- 딥러닝
- 릿코드
- 스프링 프레임워크
- Spring Framework
- 머신러닝
- jvm
- Java
- Python
- 백트래킹
- dfs
- C/C++
- 다이나믹프로그래밍
- 백준
- C++
- 시애틀
- Today
- Total
케이스윔의 개발 블로그
[프로그래머스][카카오] 파일명 정렬 본문
문제
파일명에 포함된 숫자를 반영하여 정렬하는 프로그램을 구현하시오.
문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/17686)
풀이
파일명이 주어지면 head, number, tail로 나눈 다음 정렬을 통해 쉽게 구할 수 있는 문제였습니다. head에는 숫자가 포함되지 않기 때문에 숫자가 나오는 순간부터는 number 영역이고, char로 입력된 number 영역은 int형으로 바꿔줘야합니다. head와 number를 구하고 input에서 해당 input의 인덱스와 함께 구조체로 vector에 넣어주었습니다. index를 구조체에 넣은 이유는 stable하게 정렬하기 위해서, 값을 편하게 고쳐서 구조체에 넣기 때문에(전부 소문자로 바꾸는 것, tail은 날려버리는 것) 마지막 answer 을 만들어내기 위해선 input인 files에서 해당 index로 원본 string을 가져올 수 있기 때문입니다. 이 다음은 vector를 정렬해주면 되는데 우선 head를 기준으로 정렬하고 만약 같다면 number를 기준으로 정렬하도록 했습니다.(head는 대소문자 구분하지 않으므로 소문자로 다 바꾸어 주었습니다.) number은 이미 넣을 때 int형으로 넣어주었기 때문에 쉽게 compare 함수를 만들 수 있었습니다. 만약 head도 같고 number도 같다면 index를 비교해서 stable하게 유지해줍니다. 또는 stable_sort로 써주면 compare 함수에서 인덱스를 고려해주지 않아도 됩니다.
카카오 코딩테스트를 보면 문자열을 다루는 문제가 많은데 항상 까먹는 부분을 까먹고 검색해서 풀곤하는데 이런 문제들이 자주 나오니까 최대한 기억하고 빠르게 푸는 것이 중요한 것 같습니다!
(해설: http://tech.kakao.com/2017/11/14/kakao-blind-recruitment-round-3/)
코드
https://github.com/kswim/Algorithm/blob/master/etc/17686.cpp
'Algorithm' 카테고리의 다른 글
[프로그래머스][트리] 길 찾기 게임 (0) | 2019.01.31 |
---|---|
[프로그래머스][스택] 쇠막대기 (0) | 2018.12.26 |
[프로그래머스][카카오] n진수 게임 (0) | 2018.12.23 |
[프로그래머스][카카오] 프렌즈4블록 (0) | 2018.12.23 |
[프로그래머스][카카오] 압축 (0) | 2018.12.22 |