본문 바로가기

Algorithm

(84)
1. 알고리즘 정리 (브루트 포스) 우선 개념에 대해서 숙지 및 관련 유형 문제를 풀이한다. (문제는 , 백준 기준 - https://www.acmicpc.net/step 기준) 1. 브루트포스 완전 탐색 알고리즘, 가능한 모든 경우를 탐색 , 조건에 맞는 결과만 가져온다. 무식하게 탐색하는 방법, 100% 정답을 찾는다. * 블랙잭 문제 https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 전형적인, 완전 탐색문제이다. 배열을 3중 for문을 사용해서..
알고리즘 공부 총 목차, 공부해야할 리스트 정리 브루트 포스 DFS BFS 시뮬레이션/ 구현 DP 그리디 이분탐색 투포인터 최단경로 다이나믹 프로그래밍 백트랙킹 Trie KMP 위상정렬 최소신장 트리 폴로이드 와샬 다익스트라 이정도 한번 달려보자!
코테할때 알아두면 좋은 함수들 1. 배열 선언 int[] a = new int[8] int[] a = {1,2,3,4,5} 2. 배열 -> 문자열 Arrays.toString(); Arrays.sort(배열) -> 오름차순 Arrays.sort(배열,Colections.reversOrder()) -> 내림차순 배열의 특정 범위만 빼기, Arrays.copyOfRange(배열,2,4) 3. char 배열 -> 문자열 : String.valueof 4.문자열 비교 str.startWith("a"); str.endWith("a"); str.indexOf("a"); str.subString(0,2); str.toLowerCase str.toUpperCase str.trim() str.charAt(i) -> i번째 문자 출력 StringBui..
[Codility] binary gap 풀이 쉽게말해서, 2진수로 변환하고, 해당 1간의 간격의 최대값을 구하는게 키포인트이다. 이진수로 변환하는건 라이브러리가있기 때문에 변환해서, 값 index를 배열에 넣고, 빼주고 -1 을 더 뺴준다. index가 3,2 일경우 11 이기때문에 gap은 0이기때문에
[프로그래머스] 위장 문제 풀이 위장 문제 문제의 키포인트는 각각의 옷에 대한 카테고리는 같지만 이름은 다 다르다는것이다. key 로만 구분해서, 해당 값들을 카운트한 값들을 넣어주고, 각각 경우의수를 곱해준다. 상의3개 하의2개인 경우 3 * 2 6가지의 옷을 입을수 있고, 해당 케이스처럼 * 해준뒤에 다 벗을수있는경우가 포함되어있는 경우 1은 빼준다. 그리고 상의가 2개여도, 안입을수도있기 떄문에 (하의 1개만 입을수 있음) 해당 경우를 생각해서 가지수 +1 해서 곱해준다.
[프로그래머스]그리드 - 체육복 그리드 함수를 쓰는 체육복 문제이다. 난이도는 1이며, 푸는건 10분 정도 걸렸다. 우선 전체 탐색은 기본이고, 한번빌려줬으면, 해당 사람은 못빌려주니까, 다음 검색 조건에서 -음수대로 만들어야 한다. 그리고, 본인이 잊어버리고 여분이 있을수있으니, 우선 이 케이스는 먼저 음수처리를 하고, 전체 탐색을 진행 한다 일케하면, 빌려줌을 못받는 애들만 lost에서양수인채로 남아져있고, 나머지는 -99가 된다. 혹시 0의 인덱스에 걸려있을수도있으니 -1은 위험하다고 생각해서 -99로했다. 무튼 이렇게 되면 통과
[프로그래머스]H-Index 문제 간단하다. int 배열 들어오면, 정렬해서 단순 조건으로, 득정 인덱스의 값을 return 해주면 된다. 단 , 문제의 index를 한번 sort한거니까, 길이에서 -i를 한값을 answer에 넣어야한다 ㅋ 걍 간단하게 잔머리 쓴듯한 문제?ㅋ
프로그래머스 가장 큰수 난이도 2의 가장큰수, 쉽게 봤다가. 큰코 다칠뻔 ㅋ int 형 배열을, String 형 배열로 바꿔서 비교 및 출력.... 우선, int 형 배열을 바꿔야한다. for(int i =0;i