[프로그래머스 알고리즘 고득점 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 증명 나머지는 나눠지는 수가 나누는 수보다 작아질 때까지 빼는 것과 같다. 다르게 말하..