[프로그래머스 알고리즘 고득점 Kit][해시][Java] 전화번호 목록
·
알고리즘 & 자료구조/해시
https://school.programmers.co.kr/learn/courses/30/lessons/42577?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1. 틀린 코드문자열을 사전순으로 정렬하면 접두사는 바로 옆에 있게됨그러면 바로 옆만 비교하면서 접두사인지 아닌지 체크하고 있으면 바로 false return 안되고 반복문 탈출하면 true뭐가 틀렸을까...?아 바본가.. Arrays.sort(phone_book, (s1, s2) -> { return s1.length() - s2.length(); });처음엔 문자열 길이가 짧은 거를..
[프로그래머스 알고리즘 고득점 Kit][해시][Java] 포켓몬
·
알고리즘 & 자료구조/해시
https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr정답 코드포켓몬 종류수와 내가 선택해야할 포켓몬 수를 비교해서종류 수가 더 많다면 선택해야할 모든 포켓몬이 중복이 없고 (cnt > len/2 -> len/2만큼 뽑고도 중복없는 포켓몬이 남음)종류 수가 더 적다면 전부 다르게 선택할 수 있음 (cnt cnt만큼 뽑고 나머지는 중복)import java.io.*;import java.util.*;class Solution { public int solution(int[] nums) { i..
[프로그래머스 알고리즘 고득점 Kit][정렬][Java] K번째 수
·
알고리즘 & 자료구조/정렬
https://school.programmers.co.kr/learn/courses/30/lessons/42748 정답 코드유의점 i, j, k는 1~n을 따라서 배열의 인덱스를 0~n-1인지 잘 체크해줘야한다. Integer.compare를 쓰는 이유 여기선 필요없는데 (정수 - 정수)가 Integer의 범위를 넘겨 오버플로우가 나는 것을 예방하기 위해사용한다.import java.io.*;import java.util.*;class Solution { public int[] solution(int[] array, int[][] commands) { int m = commands.length; int[] answer = new int[m]; for(int c..
[프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 게임 맵 최단거리
·
알고리즘 & 자료구조/BFS
https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 정답 풀이V + E -> N*M + 4(N*M) -> O(NM)간단한 bfs 문제import java.io.*;import java.util.*;class Solution { final static int[] dx = {-1, 1, 0, 0}; final static int[] dy = {0, 0, -1, 1}; static int[][] map; public int solution(int[][] maps) { ..
[프로그래머스 알고리즘 고득점 Kit][해시][Java] 완주하지 못한 선수
·
알고리즘 & 자료구조/해시
https://school.programmers.co.kr/learn/courses/30/lessons/425761. 틀린 코드HashSet에 완주자를 저장하고 참가자 배열을 돌면서 완주자 집합에 없으면 완주하지 못한 선수라 생각하고 코드를 작성했다.문제를 제대로 안읽고 빠르게 풀려다 동명이인이 존재함을 인지하지 못했다.import java.io.*;import java.util.*;class Solution { static HashSet completions; public String solution(String[] participant, String[] completion) { String answer = ""; completions = new Ha..
유클리드 호제법 - 최대공약수 구하기(+ 최소공배수)
·
알고리즘 & 자료구조/유클리드 호제법
알아야할 표현 최대공약수 = GCD = Greatest Common DivisorGCD(A, B) = A와 B의 최대공약수 유클리드 호제법 두 양수 A, B(A > B)에 대하여 A = BQ + R (0 ≤ R 즉, GCD(A, B) = GCD(B, R)R = 0이라면 A, B의 최대공약수는 B가 된다.(출처 - 유클리드 호제법 나무위키) 정리 A와 B의 GCD는 B와 (A를 B로 나눈 나머지)의 GCD와 같다.GCD(A, B) = GCD(B, A%B) 예시 ex) 270, 192의 최대공약수GCD(270, 192) = GCD(192, 78) = GCD(78, 36) = GCD(36, 6) = GCD(6, 0) = 6 증명 나머지는 나눠지는 수가 나누는 수보다 작아질 때까지 빼는 것과 같다. 다르게 말하..