본문 바로가기

반응형

전체 글

(89)
[코딩테스트][알고리즘] 5. DFS (Depth First Search) 깊이 우선 탐색 DFS는 코딩테스트에서 자주 출제되는 유형이라고 하니 잘 익혀두는 것이 좋을 것 같다. DFS는 그림과 같이 탐색을 진행하는 알고리즘이다. 갈때까지 가다가 더 이상 진행 할 곳이 없으면 돌아가서 다음 방법을 찾는 것이다. 미로를 탐색한다고 생각할때 오른벽에서 손을 떼지 않고 계속 전진하면 출구를 찾을수 있다는 아이디어가 바로 DFS 탐색법이라고 말 할 수 있다. 다시 말해 가장 깊은 곳까지 가는 것을 우선시 하며 탐색하는 것이다. dfs는 stack 혹은 재귀함수로 구현 할 수 있다. 재귀함수로 구현하는게 매우 간단하기 때문에 재귀함수로 구현하는 것을 추천한다. dfs는 다음과 같이 구현 할 수 있다. public static void dfs( int here ) { System.out.print(her..
java - 백준 알고리즘 - 2667 단지번호붙이기 https://www.acmicpc.net/problem/2667 이 문제는 백준 단계별로 풀기 bfs , dfs에 분류되어 있는 문제이다. 나는 재귀 dfs를 사용해서 풀었고 기본적인 아이디어는 이러하다. 1. 모든 좌표마다 dfs 반복을 시도한다. ( 2중 for문 사용 ) 2. 좌표의 값이 1이고 방문하지 않았으면 dfs를 실행한다. ( dfs가 한번 실행되면 단지 번호가 1 늘어남 ) ( dfs경로에 있는 아파트들은 모두 방문처리가 되므로 2번이 단지 번호만큼만 실행됨 ) 자세한 내용은 코드에 주석을 참고하면 좋을것 같다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impor..
산업기사, 기사 일정 / 응시자격 확인 하기 산업기사, 기사는 1년에 3번 정기시험이 있습니다. 아래 표는 2020년 기준 산업기사/기사 시험 일정입니다. 4년제 대학생의 경우 4개학기 이상 수료(학적상 3학년 1학기 이상) 산업기사 시험에 응시 가능하며 졸업예정자(최종학년재학자)(학적상 4학년 1학기 또는 2학기) 일 경우 기사 시험에 응시 가능합니다. 응시자격을 갖추지 않은 상태에서도 필기 시험은 칠 수 있지만, 합격점수를 받는다해도 합격이 취소됩니다. 만약 필기 원서접수때는 응시자격을 갖추지 못한 상태여도 , 응시자격 서류제출 기간에 자격을 갖출수 있다면 합격이 가능합니다. 아래 링크는 q-net(한국산업인력공단)에서 제공하는 응시자격 자가진단 서비스 입니다. 응시자격 서류제출 기간 기준으로 해당되는 학력, 경력을 입력해보고 계획세우는데 참고..
java - 백준 알고리즘 - 2606 바이러스 알고리즘 분류에는 플로이드 와샬 알고리즘이라고 분류 되어있지만 dfs를 이용해서 풀었다. 자세한 설명은 코드에 주석을 보면 좋을 것 같다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int N, M, result; static boolean[][] conn;// 컴퓨터 간의 연결을 나타내기 위한 배열 static boolean[] visited;// 방문을 체크하기 위한 배열 public static void main(String[] agrs) throws IOExceptio..
java - 백준 알고리즘 - 2493 탑 이 문제는 자료구조 Stack을 이용하는 문제이다. 왼쪽부터 차례대로 Stack에 하나씩 넣으면서 스텍의 Top 값과 비교해주면 된다. 인덱스를 출력하기 위해서 높이와 인덱스 2개의 stack을 사용하였다. 스텍에 넣을 값 = now, 스텍의 top 값 = top 1. top > now 일때 Top의 index를 버퍼에 담고 now를 hight, index 스텍에 push 해준다. 2. now = i; ++i) { arr[i] = Integer.parseInt(st.nextToken()); } hight.push(arr[1]); index.push(1); bw.write(""+0); for (int i = 2; N >= i; ++i) { while (true) { if (!hight.isEmpty()) ..
JAVA - 백준 알고리즘 - 1520 내리막길 이 문제는 dp를 사용하여 풀 수 있는 문제이다. dp를 사용하는데 완전히 익숙해지지 않았는지 계속 시간초과가 났다. 2시간정도 시도 해보다가 결국 다른 블로그에서 코드를 참고하여 테스트케이스를 디버깅해보고 문제를 해결했다. (왼쪽 오른쪽 위쪽 아래쪽)으로 움직여야 할때 nx와 ny를 사용해 간단하게 표현하는 테크닉에 익숙해지도록 자주 사용해봐야 겠다. 자세한 설명은 주석을 참고하면 좋을 것 같다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class P1520 { static int[][] map; stati..
전산응용기계제도 기능사 필기시험 독학 합격 후기, 공부방법 저는 기계공학과를 다니는 대학생인데, 방학 때 cad 공부를 해야겠다고 마음을 먹었습니다. 막상 시작하려고 하니 잘 안되어 자격증 시험을 접수하면 공부를 하게 되지 않을까?라는 생각에 시험을 접수했습니다. 필기시험이라 그런지 cad에 관련된 내용은 별로 나오지 않았고 시험일이 다가오기 전까지는 공부를 하지 않았습니다. 2월 5일에 cbt사이트에 접속해서 대충 어떤 문제가 나오는지 풀어봤는데 대학교 수업(기계공작법)에서 배웠던 내용이 포함되어 있어 '쉽게 따겠구나.' 생각했습니다. 60점만 넘으면 합격이 가능하기 때문에 모든 내용을 기억하려고 하지 않았고, 모의고사 점수가 70~80점 정도가 나올때 까지 공부를 하였습니다. 실제 시험에서도 70점 정도 나왔고 시간도 모의고사 풀 때와 비슷하게 20분 정도 ..
컴활 1급 실기 독학 합격 후기, 공부방법 공유, 팁 안녕하세요. 1주일 정도 전에 컴활 1급 실기시험을 치고 왔습니다. 저는 시험을 응시해놓아야 공부를 열심히 하는 스타일이라 1월 30일에 필기시험을 합격하고 바로 실기시험 접수를 했습니다. 대부분 접수가 마감되어 2월 15일에 응시를 하였습니다. 공부를 할 수 있는 기간이 2주 정도 있었는데, 다른 시험과 병행해서 준비하느라 2월 9일 정도에 컴활 실기 공부를 시작한 것 같습니다. 저는 실기 시험을 2번 응시하였는데요! 2월 15일에 한번 시험을 보고 나서 합격할 것이라는 확신이 없었습니다. 그래서 시험을 보고 나온 후 바로 2월 19일에 시험을 접수하여 2번 시험을 보았습니다. 두 번째 친 시험은 합격을 할 것 같다는 느낌이 강해 더 이상 시험을 치지 않고 결과를 기다렸습니다! 제가 공부한 방법에 대해..

반응형