java 20

[JAVA/백준1924] 2007년

문제 문제풀이 월, 날짜를 입력 받고 1월 1일로부터 얼마나 지났는지 일수를 더한 후 현재 날짜를 더해준다. 그리고 7을 나눈 나머지값으로 미리 생성해둔 요일 배열에서 현재 요일이 무엇인지를 알 수 있다. 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Scanner; import java.util.StringTokenizer; public class Main { public static StringTokenizer st; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(ne..

[JAVA/백준10951] A + B - 4

문제 문제 풀이 처음에 테스트케이스가 주어지지 않고 계속 입력을 받으므로 while(true)를 하여 Scanner로 a,b의 값을 받아주었는데 런타임 에러가 발생하였다. 검색 결과, Scanner클래스의 hasNext()를 사용하면 된다는 것을 알게 되었다. C/C++에서는 이런 경우 EOF(End Of File)를 사용하면 된다는데 Java에서는 EOF를 직접 입력했기 때문에 멈추기 때문이라고 한다. 소스코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { int A = sc.nextInt..

[JAVA/2667] 단지번호붙이기

1. 문제 2. 문제 풀이 지도의 크기 n을 입력받을 때, n의 최대가 25이므로 나중에 출력될 단지개수는 최대 313개가 나올 수 있다. 따라서 각 단지 내 집수를 저장할 배열 danji의 크기를 최대 큰 (n*n/2)+2개로 잡아주었다. n+1사이즈의 map[n+1][n+1]을 for문을 돌면서 (1,1)부터 순서대로 이동시킨다. 이때 값이 1이고 한번도 방문하지 않은 경우가 나오면 단지번호(cnt)를 하나 증가시키고 dfs함수를 호출한다.dfs함수에서는 넘어온 좌표는 이제 방문했음을 표시해야 하므로 visited배열에서 해당하는 좌표에 1을 넣는다. 그리고 해당하는 단지번호에 집 하나가 들어온것이므로 danji[cnt]를 하나 증가시켜준다. 이제 이 단지에 있는 집을 '오른쪽→아래→왼쪽→위쪽'의 시..

[JAVA 알고리즘] 깊이 우선 탐색(DFS:Depth First Search)

깊이 우선 탐색(DFS)란? Depth First Search의 약자 한 방향으로 갈 수 있을 때 까지 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아와서 다른 방향으로 다시 탐색을 진행하는 그래프탐색 방법으로 넓게 보다는 깊게 탐색하는 방법 자기 자신을 다시 호출 하는 순환 알고리즘의 형태를 가지고 있다. 넓게(wid) 보다는 깊게(deep) 탐색하는 것 모든 노드를 방문하고자 하는 경우 선택한다 전위 순회(Pre-order Traversals)를 포함한 다른 트리 순회는 모두 DFS의 한 종류이다 그래프 탐색 시 노드의 방문여부를 반드시 검사하여야 한다 → 검사를 하지 않을 경우 무한루프 깊이 우선 탐색(DFS)의 과정 DFS 구현 DFS를 구현하는 방법은 1.순환 호출 이용 ..

알고리즘 2019.05.27

[JAVA/백준15552] 빠른 A+B

1. 문제 2. 풀이 Scanner대신 BufferedReader를 사용하여 입력 받을 경우 Enter로만 인식하고 데이터가 String으로 고정되기 때문에 작업 속도가 훨씬 빠르다. readLine()으로 입력을 받을시 리턴값은 항상 String이므로 다른 타입으로 입력받으려면 적절한 형변환이 필요하다. 그리고, 예외처리를 해주어야 하는데 대개 throws IOException을 넣어준다. BufferedReader를 이용하여 공백단위로 데이터 가공하기 1. StringTokenizer의 nextToken()함수를 사용하여 readLine()를 통해 입력받은 데이터를 공백 단위로 구분하여 순서대로 호출할 수 있다. BufferedReader br = new BufferedReader(new InputS..

[JAVA 자료구조] 스택(Stack)

스택이란? 스택은 물건을 쌓아올리는 자료를 쌓아 올린 형태의 자료구조이다. 가장 먼저 입력된 데이터가 맨 아래에 쌓이고 가장 최근에 입력된 데이터가 가장 위에 쌓이는 구조를 가지고 있다. 스택의 마지막에 삽입한 자료가 가장 먼저 꺼내어지므로 후입선출(LIFO:Last-In First-OUT)이며, 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형구조이다. ※참고※ 선형구조와 비선형구조 - 선형구조: 자료간의 관계가 1대 1의 관계를 가짐 - 비선형구조: 자료간의 관계가 1대 N의 관계를 가짐(ex.트리 자료구조) 스택의 구조 - 스택 상단(top): 스택에서 입출력이 이루어지는 부분 - 스택 하단(bottom): 바닥 부분 - 요소(element): 스택에 저장되는 것 - 공백(empty)상태: 요소가 하나..

자료구조 2019.05.22