본문 바로가기

반응형

코딩테스트

(4)
코딩테스트를 위한 자바(java) 비트연산 - 5 비트 마스크를 알기전에 미리 공부해야 할 비트연산에 대한 내용이다. 잘 숙지 해놓으면 비트 마스트를 이해하는데 도움이 될 것이다. 논리곱 AND & 두 비트가 모두 1일때 1을 반환 논리합 OR | 두 비트 중 하나라도 1이면 1을 반환 반전 ~ 비트가 1이면 0, 0이면 1을 반환 배타적논리합 XOR ^ 두 비트가 같으면 0, 다르면 1을 반환 오른쪽 시프트 연산자 >> 오른쪽으로 이동 후 왼쪽에는 0을 삽입 왼쪽 시프트 연산자 3);// 00010오른쪽으로 3칸 이동 // d == 2 byte a = 5; // 101 byte b = (byte) (a
[코딩테스트][알고리즘] 5. DFS (Depth First Search) 깊이 우선 탐색 DFS는 코딩테스트에서 자주 출제되는 유형이라고 하니 잘 익혀두는 것이 좋을 것 같다. DFS는 그림과 같이 탐색을 진행하는 알고리즘이다. 갈때까지 가다가 더 이상 진행 할 곳이 없으면 돌아가서 다음 방법을 찾는 것이다. 미로를 탐색한다고 생각할때 오른벽에서 손을 떼지 않고 계속 전진하면 출구를 찾을수 있다는 아이디어가 바로 DFS 탐색법이라고 말 할 수 있다. 다시 말해 가장 깊은 곳까지 가는 것을 우선시 하며 탐색하는 것이다. dfs는 stack 혹은 재귀함수로 구현 할 수 있다. 재귀함수로 구현하는게 매우 간단하기 때문에 재귀함수로 구현하는 것을 추천한다. dfs는 다음과 같이 구현 할 수 있다. public static void dfs( int here ) { System.out.print(her..
[코딩테스트][알고리즘] 1. Brute Force(브루트포스 , 완전탐색) brute force는 완전 탐색이라고도 불리며, 모든 경우의 수를 직접 대입해보는 방법으로 가장 간단하게 문제를 풀 수 있는 방법이다. 풀이법이 잘 생각나지 않는 문제라면, 완전 탐색을 이용해 코딩을 한 후 최적화하는 과정을 사용한다면 문제를 해결에 도움을 받을 수 있을 것이다. 완전 탐색의 시간 복잡도는 주로 O(N!), O(2^N)이다. 시간 복잡도를 알고 있으면, 문제의 조건을 보고 필요한 알고리즘을 유추하는 방법도 있다고 하니 시간 복잡도에 대해 알아놓으면 좋을 것 같다. 완전 탐색은 반복문을 이용하는 방법, 재귀 함수를 이용하는 방법이 있는데 보편적으로 사용되는 것은 재귀 함수라고 한다. 반복문의 경우 길이가 변하는 문제를 다룰때 구현이 복잡해진다는 단점이 있다. 초보자의 경우에는 재귀함수가 ..
코딩테스트를 위한 자바(java) 파일 입력, 출력 - 1 테스트케이스 입력이 다음과 같이 주어졌을때 처리 방법 case 1 : 첫 줄에는 숫자의 갯수 N / 두번째 줄부터는 숫자 주어진 경우 3 1 2 3 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); // 첫번째 N 문자 입력받기 String[] str = new String[N]; // N 크기의 String 배열 생성 for (int i = 0; N > i; ++i) { // String 배열에 입력받은 문자 담기 str[i] = br.read..

반응형