본문 바로가기
728x90

츄Log/알고리즘 연습장43

연습#7 전화번호 목록 오늘도 풀었습니다. 아니, 풀려고 시도했으나 못 풀었습니다.. ㅠ 프로그래머스 고득점Kit의 해시 level3 문제를 풀었는데요, 해시라는 힌트가 있음에도 불구하고 이용하지 못했고 이중포문만 남발한 끝에 시간초과로 해결하지 못했습니다. 다른 분들의 풀이와 접근 방법을 보던 중 온라인 선생님을 뵙게 되어 접근법을 공유해봅니다. 모든 전화번호를 해시맵에 key로 넣어둡니다. 그리고 전화번호 리스트를 돌면서, 각 전화번호의 접두어들이 해시맵에 있는지 확인합니다. 여기서 핵심은, 각 전화번호 자신은 해시맵에 있으므로 자기자신은 포함되지 않아야 합니다. 갈 길이 더 멀어졌습니다^^; 출처(온라인 선생님) : https://coding-grandpa.tistory.com/77 2023. 12. 7.
연습#6 H-Index 안녕하세요! 오늘도 알고리즘 연습은 계속됩니다. 프로그래머스 고득점Kit 정렬 마지막 level H-Index 문제를 풀었습니다. 생각보다 금방 풀었는데요, 문제 파트가 정렬이라 정렬이 핵심이라는 힌트는 처음부터 얻어서 빨리 풀었다고 생각합니다. 제 접근 방법은 다음과 같습니다. 10,000회라는 최대 인용 횟수가 있으니 10,000회 안에서 루프를 돕니다. 하나씩 순차적으로 증가하는 이 루프의 인덱스는 추정 인용 횟수입니다. 예를 들어봅시다. [0, 1, 3, 5, 6] 이 있을 때 0회 인용되었다고 가정 -> 인용된 논문 5개 1회 인용되었다고 가정 -> 인용된 논문 5-1 = 4개 2회 인용되었다고 가정 -> 인용된 논문 : 5-2 = 3개 3회 인용되었다고 가정 -> 인용된 논문 : 5-2 = 3.. 2023. 12. 6.
연습#5 가장 큰 수 정말 오래 걸렸습니다. 결국 다른 분들의 풀이를 보고, 이렇게 간단하다니.... 대체 어디서 사고가 막혀버린 걸까? 싶었습니다. 프로그래머스 정렬 level2인 가장 큰 수를 풀었습니다. 접근법은 간단합니다. 두 문자열을 더한 것들을 비교하면서 정렬하여 내림차순으로 만든 후, 그 정렬된 문자들을 모두 이으면 됩니다. 핵심은 이 부분입니다. Collections.sort(list, (a, b) -> { String as = a+"", bs = b+""; return -Integer.compare(Integer.parseInt(as + bs), Integer.parseInt(bs + as)); }); 갈 길이 머네요 ^_^.. 2023. 12. 6.
연습#4 폰켓몬 오늘도 알고리즘 문제 연습을 했습니다. 프로그래머스의 정렬 Level2를 풀다가 머리가 깨질 것 같아서 잠시 덮어두고(이따 다시 도전할 예정입니다.) 해시 Level2 문제를 풀었습니다. 어제 해시 Level1을 연습해서 그런지, 이번 문제는 10분만에 풀었습니다. 기분이 좋습니다. 오늘 푼 문제는 해시 > Level2 폰켓몬 입니다. import java.util.*; class Solution { public int solution(int[] nums) { final Map maps = new HashMap(); for (int num: nums) { maps.put(num, maps.getOrDefault(num, 0)+1); } if (nums.length/2 Integer.min(phonekem.. 2023. 12. 5.
연습#3 완주하지 못한 선수 오늘도 알고리즘 유형을 익히기 위해 프로그래머스 고득점Kit에서 레벨1짜리 문제, 해시>완주하지 못한 선수를 풀었습니다. 슥 보고 문제가 굉장히 쉽다고 생각해서 10분만에 풀어냈으나 테스트 케이스에서 틀려버렸고, 패인은 문제를 끝까지 읽지 않은 것이었습니다. 이후 풀이에서는 시간초과로 실패하고, 잠깐 포기할까 했으나 핀이 '중복은 카운트를 생각해볼 수 있다'라는 힌트를 통해 결국 풀어냈습니다. 문제 유형별 접근법을 익히게 되네요! import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; Map participantMap = new HashM.. 2023. 12. 4.
연습#2 K번째수 안녕하세요. 도저히 기본기가 부족하다는 생각에 핀의 추천으로 프로그래머스 알고리즘Kit을 풀기 시작했습니다. 정렬파트의 K번째수 문제를 풀었습니다. import java.util.*; class Solution { public int[] solution(int[] array, int[][] commands) { int[] res = new int[commands.length]; for (int i=0; i 2023. 12. 3.
연습#1 599. Minimum Index Sum of Two Lists 안녕하세요. 저는 알고리즘에 매우 취약하다는 약점을 가지고 있습니다. 이를 개선하기 위해 매일매일 쉬운 것부터 하나씩 풀어보기로 했습니다. 언젠가 저도 알고리즘이 익숙할 날이 오겠죠? LeetCode#599. Minimum Index Sum of Two Lists Minimum Index Sum of Two Lists - LeetCode Can you solve this real interview question? Minimum Index Sum of Two Lists - Given two arrays of strings list1 and list2, find the common strings with the least index sum. A common string is a string that app.. 2023. 12. 3.
728x90