본문 바로가기

문제풀이64

[프로그래머스] 보석쇼핑 이 문제의 경우는 효율성과 정확성이 별도로 채점되는 문제이다. 정확성의 경우 이중 for문을 이용해서 0,0~N,N까지 모든 경우 중에서 모든 보석을 포함하고 있는 모든 경우를 체크해서 정렬을 해주면 맞출 수 있다. 하지만 O(N^2) 의 시간 복잡도를 가지기 때문에 N의 크기 제한이 10만 인것을 생각해보면 효율성은 통과하기 힘들다. 이 문제에서 주목해야 할 부분은 "특정 범위의 보석을 모두 싹쓸이 한다" 이다. 이 부분만 봐도 투포인터를 이용하여 풀어야 할 것 같다는 생각이 드는 문제이다. 투포인터를 이용하여 범위를 조정해 나가며 조건을 만족하는 모든 값을 저장한 후 문제에서 요청하는대로 값을 정렬하여 보내준다. 이때 잊어버리면 안되는 점은 "만약 가장 짧은 구간이 여러 개라면 시작 진열대 번호가 가.. 2022. 10. 3.
[HackerRank] Sherlock and the Valid String 이 문제는 단순한 구현 문제로 문제에 대한 세부 조건을 잘 읽지 않으면 틀릴 수 있는 문제이다. public static String isValid(String s) { // Write your code here HashMap map = new HashMap(); pushCharToMap(s, map); return checkValidation(map); } public static void pushCharToMap(String s, HashMap map) { for(int i = 0; i v+1); } } public static S.. 2022. 10. 3.
[HakerRank] Climbing the Leaderboard 링크에 들어가서 보면 알겠지만 문제 자체는 쉽지만 시간 복잡도를 생각하지 않으면 시간복잡도를 만족시키기 어려운 문제이다. 우선 시간복잡도를 생각하지 않고 정말 단순하게 푸는 방법을 다음과 같이 생각하였다. public static List climbingLeaderboard(List ranked, List player) { // Write your code here List answer = new ArrayList(); for(Integer playerScore : player) { var resultList = ranked.stream().distinct().filter(x -> x > playerScore).collect(Collectors.toList()); answer.add(resultList... 2022. 10. 2.
[LeetCode] 187. Repeated DNA Sequences Java class Solution { public List findRepeatedDnaSequences(String s) { Set set = new HashSet(); Set answerSet = new HashSet(); for(int i=0;i 2021. 6. 18.