알고리즘 6

[프로그래머스]2019카카오개발자겨울 인턴십>크레인 인형뽑기 게임 Java

https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 스택으로 바구니를 만들고 바구니에 있는 인형과 뽑을 인형을 비교해서 바구니 제일 위에 있는 인형이면 2개 같이 터트림 public static int solution(int[][] board, int[] moves) { int answer = 0; Stack stack = new Stack(); // 바구니 stack.push(0); // 값 같은지 비교하기 위해 초기값 필요함 for(i..

[프로그래머스]탐욕법>체육복 Java

https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 1. 도난 당한 학생보다 1 작거나 1 큰 수 학생이 여벌이 있으면 체육 수업을 들을 수 있다. 2. 여벌이 있는 학생이 도난 당했다면 -1로 해주면서 다른 학생에게 빌려주지 않도록 한다. public static int solution(int n, int[] lost, int[] reserve) { int answer = n - lost.length; // 체육..

[프로그래머스]정렬>K번째수 Java

https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 자바 메서드 사용으로 쉽게 풀 수 있었던 문제다. Arrays.copyOfRange(arr,i,j) -> arr[i]에서부터 arr[j-1]까지 복사해서 새로운 배열을 만드는 메서드 Arrays.sort(arr) -> arr 오름차순 import java.util.Arrays; class Solution { public static int[] solution(int[] array, int[][] commands) { int[] ..

[알고리즘]_순환(Recursion)_3 반복문(Iteration)과 비교

부경대학교 권오흠 교수님의 '영리한 프로그래밍을 위한 알고리즘 강좌' Recursion vs. Iteration 모든 순환 함수는 반복문(iterator)으로 변경 가능 모든 반복문은 순환 함수로 변경 가능 순환함수는 복잡한 알고리즘을 단순하게 표현하는 것이 가능하지만, 함수 호출에 따른 오버해드가 있다. (매개변수 전달, 액티베이션 프레임 생성 등) 순환적 알고리즘 설계 암시적 매개변수(시작 지점을 암시적으로 0부터라고 하는 것)에서 명시적 매개변수(시작과 끝을 정확히 나타내는 것)로 바꾸어라 이진 탐색: Iterator(반복문 버전) public int binarySearch(int data[], int n, int target) { int begin = 0, end = n - 1; // 시작과 끝 ..

알고리즘 2021.01.29

[알고리즘]_순환(Recursion)_2 순환의 적용

부경대학교 권오흠 교수님의 '영리한 프로그래밍을 위한 알고리즘' Recursion의 적용 문자열의 길이 계산 문자열이 비어있으면 문자열의 길이는 0, 그렇지 않으면 1+(문자열의 첫 번째 문자를 제외한 문자열의 길이)이다. public static int length(String str) { if(str.equals("")) return 0; else return 1+length(str.substring(1)); // 1+(문자열의 첫 번째 문자 제외한 문자열의 길이) } 순차 탐색 data[0]에서 data[n-1] 사이에서 target을 검색한다. target이 존재하면 배열의 인덱스를 반환하고, 존재하지 않으면 -1을 반환한다. public int search(int data[], int n, in..

알고리즘 2021.01.29

[알고리즘]_순환(Recursion)_1 개념 및 예제

부경대학교 권오흠 교수님의 '영리한 프로그래밍을 위한 알고리즘' 순환(Recursion)이란? 자기 자신을 호출하는 함수 void funtion(){ ... function(); } Recursion이 무한루프에 빠지지 않으려면? Base case와 Recursive case가 필요 Base case : 적어도 하나의 recursion에 빠지지 않는 경우가 존재해야 한다. Recursive case : recursion을 반복하다보면 결국 Base case에 수렴해야 한다. public int func(int n) { if(n==0) // Base case n==0일 경우 return 0; // 0을 반환 else return n+func(n-1); // Recursive case } Factorial:..

알고리즘 2021.01.28