프로그래머스. 순위 검색
코딩테스트 연습 - 순위 검색
["java backend junior pizza 150","python frontend senior chicken 210","python frontend senior chicken 150","cpp backend senior pizza 260","java backend junior chicken 80","python backend senior chicken 50"] ["java and backend and junior and pizza 100","pyt
programmers.co.kr
먼저 효용성 아예 생각안하고 내가 푼 정확성 부분만 맞은 코드
https://eunchanee.tistory.com/319
(프로그래머스 c++ KAKAO)순위 검색
programmers.co.kr/learn/courses/30/lessons/72412 코딩테스트 연습 - 순위 검색 ["java backend junior pizza 150","python frontend senior chicken 210","python frontend senior chicken 150","cpp backend s..
eunchanee.tistory.com
이분의 코드를 참고했습니다.
카카오 기출 이제 몇문제 안풀어봤지만 지금까지 백준에서 푼것이랑 느낌이 많이 다른것 같다.
먼저 문자열을 엄청 좋아하고, map 자료구조를 쓸일이 엄청 많은것 같다.
// info
이 문제는 시간초과가 나지 않도록 하려면 info를 그냥 탐색하면 안되고 가공을 해줘야한다.
info의 하나의 행이 다음과 같다면
java backend junior pizza 150
아래와 같이 "-"를 포함한 모든 경우의 수를 따져줘야한다.
javabackendjuniorpizza
javabackendjunior-
javabackend-pizza
javabackend--
java-juniorpizza
java-junior-
java--pizza
java---
-backendjuniorpizza
-backendjunior-
-backend-pizza
-backend--
--juniorpizza
--junior-
---pizza
----
"java backend junior pizza 150"로 만들수 있는 "-"를 포함한 모든 경우의 문자열을 구하고
해당 문자열을 key로하는 value에 해당 점수인 150을 넣는것이다.
// query
쿼리의 경우는 만약 쿼리가 다음과 같다면
"cpp and - and senior and pizza 250"
info에서는 다음에 해당하고 260점한명이 있으므로 답은 1명이다.
cpp-seniorpizza
260
// 이분탐색
해당 점수 이상인지 탐색을 할때 이분탐색을 이용한다.
이분탐색은 cpp에서 lower_bound()라는 좋은 함수가 있다.
이 문제를 풀면서 lower_bound라는 좋은 함수를 알았다.
또 <sstream> 라이브러리의 stringstream 사용법도 배웠다.