알고리즘
자바(Java) 알고리즘 문제풀이 동전0 [백준 / 그리디]
11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 풀이 코드 전형적인 그리디 문제로 가능한 큰 동전으로 연산하며 가능한 최소한의 동전 갯수를 구하는 문제이다. 그리디로 접근 시 주의해야할 점이 있는데, 문제 설명을 보면 (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 라고 명시 되어있는 것을 볼 수 있다. 쉽게 말하자면 각 동전의 가치는 서로 배수관계에 있다는 뜻이며 이 입력이 보장되기 때문에 그리디로..
자바(Java) 알고리즘 문제풀이 씨름 선수 [인프런 / 그리디]
강의의 문제를 가져왔기 때문에 밝힙니다 ! 임의로 추가, 수정, 삭제한 내용들이 있으니 정확한 이해를 위해서는 강의를 구매하시는 것을 추천드립니다 😅 출처 : 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 (인프런 강의) 풀이 코드 그리디 섹션에 있는 문제이기 때문에 당연히 그리디로 풀어야하는건 알고있지만, 왜 이 문제가 그리디인가에 대해 생각을 했다. 미래를 따지지 않고 현재 선택할 수 있는 가장 좋은 것만을 선택하며 최적의 해를 뽑아내는 알고리즘이 그리디 알고리즘의 정의라고 알고 있는데, 그냥 이 문제에서는 간단한 아이디어를 통한 구현 문제라고 느껴졌다. 왜 굳이 그리디로 분류했는지는 의문이다 ,, ㅎㅎ 문제에서 지원자를 뽑는 기준으로, - 지원자 1명을 다른 모든 지원자와 비교해서 키와 몸무..
자바(Java) 알고리즘 문제풀이 같은 숫자는 싫어 [프로그래머스 / Stack]
문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한사항 배열 arr의 크기 : 1,000,000 이하의 자연수 배열 arr의 원소의 크기 : 0보다 크거나 ..
자바(Java) 알고리즘 문제풀이 쇠막대기 [인프런 / Stack]
강의의 문제를 가져왔기 때문에 밝힙니다 ! 임의로 추가, 수정, 삭제한 내용들이 있으니 정확한 이해를 위해서는 강의를 구매하시는 것을 추천드립니다 😅 출처 : 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 (인프런 강의) 1) 쇠막대기 문제를 처음 봤을 땐 길기도 하고 복잡하게 보여서 꽤나 긴장했었는데, 차근차근 그림을 그려가며 보니 Stack 을 사용한다면 꽤나 간단히 풀 수 있는 문제였다. 열린 괄호를 계속해서 넣어주다가 닫힌 괄호가 등장했을 때 레이저가 만들어지는지 막대기가 나오는지 구별하면 된다. 처음 시도에서는 stack.peek() 을 활용해 풀이했는데 틀려서 디버깅 후 겨우 원인을 찾을 수 있었는데 ,, 1-1) peek() 을 활용한 첫번째 풀이 (오답) 닫힌 괄호가 등장했을 때, ..
자바(Java) 알고리즘 문제풀이 올바른 괄호,괄호문자제거 [인프런 / Stack]
강의의 문제를 가져왔기 때문에 밝힙니다 ! 임의로 추가, 수정, 삭제한 내용들이 있으니 정확한 이해를 위해서는 강의를 구매하시는 것을 추천드립니다 😅 출처 : 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 (인프런 강의) 이번에도 따로 강의를 보지 않고 문제만 풀었음 ㅎ_ㅎ 정답이긴 하지만 강의 코드와 다를 수 있습니다 ! 1) 올바른 괄호 Stack 자료구조를 활용하면 빠르게 풀어낼 수 있다. 예전에는 Input 받은 문자열을 split() 메서드를 통해 배열로 만들었는데, toCharArray() 메서드를 활용하면 효율성 테스트 또한 통과할 수 있다고는 하는데 .. 그런 제약 없으면 아무 방법이나 사용해도 무방할 듯 하다. answer 를 YES 값으로 셋팅하고, 분기문을 따라 내려가면서 NO..