[프로그래머스] 완주하지 못한 선수 문제 풀이 ( 점수 : 50/100 ) class Solution { public String solution(String[] participant, String[] completion) { String answer = ""; // 완주했냐 안했냐 판별 boolean finish = true; for(int i=0; i 코딩테스트 2020.04.09
[프로그래머스] 모의고사 💡 문제 💡 나의 풀이 ( 점수 : 100/100 ) import java.util.*; class Solution { public int[] solution(int[] answers) { int[] answer = {}; // 학생들의 찍기 패턴 int[] student1 = {1,2,3,4,5}; int[] student2 = {2,1,2,3,2,4,2,5}; int[] student3 = {3,3,1,1,2,2,4,4,5,5}; // 정답 체크하는 카운트 생성 int cnt1=0, cnt2=0, cnt3=0; for(int i=0; i 코딩테스트 2020.04.09
[Algorithm] 그리디 알고리즘(탐욕법)에 대해 쉽게 알아보자 💡 그리디 알고리즘 그리디 알고리즘은 한국어로 탐욕 알고리즘 이라고도 하며 결정해야 하는 순간 가장 좋다고 생각하는 것을 선택하면서 답을 찾아가는 알고리즘을 말합니다. 이 방식의 한계점은 그 순간에는 최적일지도 모르지만, 최종적으로는 답이 아닐 수 있는 경우가 많기 때문에 그리디 알고리즘을 사용한 경우, 최적이라는 걸 입증하는게 쉽지 않습니다. 그래도 입증만 한다면 구현하는건 다른 알고리즘에 비해 쉬운 편입니다. 아래 문제를 보면서 이해해보도록 하겠습니다. ** 그래서 그리디 알고리즘으로 문제를 어떻게 푸는건가요? 그리디 알고리즘은 무조건 큰 수부터 채워서 최소값을 구하는 것입니다. 예를 들어 동전 문제가 있습니다. 만약, 177원을 만든다면 100원 1개 10원 2개 5원 1개 1원 2개의 동전을 주면.. 기술면접대비 2020.04.09
[Algorithm] 완전탐색(Exhaustive Search)에 대해 쉽게 알아보자 💡 완전탐색 알고리즘 문제를 해결하는 데 가장 간단하고 쉬운 방법이 무엇일까? 답은 가능한 경우를 다 해보는 것이다. 이게 무슨 알고리즘이야? 할 수 있겠지만, 이것도 알고리즘에 일종이다. 전산학에서는 이를 무식하게 푼다라는 뜻의 Brute-force라 하고, 전체를 확인한다고 해서 완전 탐색 알고리즘(exhaustive search algorithm)이라고 한다. ** ☝🏻 그렇다면 완전탐색은 대체 언제 쓰이는건가요? 사실, 알고리즘 대부분의 문제들은 시간 초과등의 이유로 완전 탐색으로 풀리지 않습니다. 하지만 어려운 알고리즘을 생각할 필요 없이 완전 탐색으로 풀리는 문제도 있으며, 가끔 어려운 완전 탐색 문제도 존재합니다. 따라서, 완전 탐색 알고리즘을 문제 풀이 도구로 항상 염두해두고 있어야합니다... 기술면접대비 2020.04.09