Free Lines Arrow
본문 바로가기
728x90

Algorithm77

[프로그래머스] 입국심사 문제 분석 해당 문제는 이분법으로 분석이 좀 필요하다. 심사위원은 여러명이고 심사를 최대한 빨리 끝나는 시간을 반환해야 되는 문제이다. 1. 최소시간과 최대시간의 범위를 구한다. 2. 최소시간과 최대시간의 중간 시간를 구한다. 3. 중간시간에서 얼마나 처리 할수 있는지 계산한다. 4. 중간시간에 해결이 됐다면 더 작은 범위의 시간으로 계산한다. 5. 중간시간에 해결이 안됐다면 더큰 범위의 시간을 찾는다. 6. 이렇게 최소 시간과 최대 시간의 범위를 줄여 나가면서 최소와 최대가 동일하거나 같은면 종료한다. 구현 import java.util.*; class Solution { public long solution(int n, int[] times) { long answer = 0; Arrays.sort(t.. 2021. 7. 28.
[프로그래머스] 짝지어 제거하기 문제 분석 반복적으로 i 번째 텍스트와 i+1 텍스트를 비교해서 동일 하다면 Java 의 string의 remove를 써줘서 제거해 나간다. * 하지만 시간 초과가 발생하여 고민을 하다가 스택으로 구현을 해보았다. 통과가 되었다. 구현1 효율성 실패 class Solution { public int solution(String s) { int answer = -1; boolean flag = true; String tmpString = s; while(flag) { flag = false; for(int i = 0; i 2021. 7. 26.
[프로그래머스] 프린터 문제 분석 무식하게 풀면 될것 같다. 1. 굳이 큐를 안쓰고 리스트를 사용 했다. 2. 리스트 3개를 만든다. A: 순차적으로 우선순위가 저장된 리스트 B: 우선순위가 내림 차순으로 정렬된 리스트 C: print 목록 리스트 3. A 의 첫번째 우선순위와 B 의 우선순위가 같다면 출력 그렇지 않으면 A 의 앞에걸 뒤에 저장 동시에 C 도 동일한 방법으로 업데이트. 4. 만일 A 의 우선 순위와 B 의 우선순위가 같다면 앞에있는걸 삭제 하고 삭제 된것이 원하는 target 이라면 index를 찾고 중단한다. 구현 import java.util.*; import java.util.LinkedList; import java.util.Queue; import java.util.Collections; class .. 2021. 7. 23.
[프로그래머스] 타겟 넘버 문제 분석 완전 탐색 문제이다 정수인 1 을 바꿔 가면서 더하기 빼기를 해준다. 그러다가 5개를 다 더했을때 값이 원하는 값이면 1을 더해 준다. 완전 탐색인데 단순 완전 탐색이 아니라 음수 양수를 따져서 탐색을 해줘야 한다. 그렇다면 어떻게 하면 될까? 재귀 함수로 구현을 한다. 인덱스를 증가 해주면서 재귀함수안에서 두번 호출을 해준다. 정수일때와 음수 일때. 아래 그림 처럼 리턴이 될때 정수 음수 번갈아 가며 탐색을 한다. 구현 import java.util.*; class Solution { public int solve(int[] numbers, int target, int sum, int idx) { if (idx == numbers.length) { if(sum == target) { retu.. 2021. 7. 23.
728x90
반응형