자바
TPC 강의를 학습하게 된 계기에 대해 ..
어쩌다가 ? 몇일 전, 인프런에서 강의를 듣던 중 우연히 박매일님의 Java TCP 강의라는 것을 보게되었다. TCP 가 뭘까 궁금해서 클릭해봤는데, Thinking - Presentation - Coding 의 약자 즉, 생각, 표현, 그리고 코딩이더라. 한창 알고리즘 공부도 하고 CS 공부도 하고 있는데 나의 자바 기초는 얼마나 탄탄한가 ? 객체지향에 대해서 얼만큼 정확하게 알고있는가 ? 또는 생각을 하면서 코딩을 하고 있나 ? 라는 생각이 문득 들었다. 음.. 누가 저렇게 물어본다면 자바 기초를 잊고 스프링 프로젝트만 하다보니 본질을 잊어버린채 스프링을 위한 코드만을 짜낼 뿐 솔직히 잘 모르겠다고 대답했을 것 같다. 그래서 초심으로 돌아가기 위해 강의를 질러버림 ㅋㅋㅎ😅 강의 내용에 JVM 메모리 ..
자바(Java) 알고리즘 문제풀이 섬의 갯수 [백준 / DFS]
https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 풀이 코드 여러가지 테스트 케이스를 자유롭게 입력받아야 하는 부분이 조금 까다로운 문제였다. 대각선을 허용하기 때문에 4방향 벡터가 아닌 8방향 벡터를 사용해서 풀이하면 되는 문제. int[][] map 이차원 배열과 동일한 크기의 boolean[][] visited 방문 체크 배열을 따로 만들지 않고 map 배열에서 1인 경우 (땅인 경우) 일 때 바로 카운팅을 해주고, 해당 좌표를 인자로..
자바(Java) 알고리즘 문제풀이 인접행렬 경로탐색 [인프런 / 모든 조합 유형]
강의의 문제를 가져왔기 때문에 밝힙니다 ! 임의로 추가, 수정, 삭제한 내용들이 있으니 정확한 이해를 위해서는 강의를 구매하시는 것을 추천드립니다 😅 출처 : 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 (인프런 강의) 풀이 코드 인접 행렬로 그래프를 표현해서 풀이하는 방법과 인접 리스트로 그래프를 표현해 풀이하는 방법이 있다. 먼저 인접 행렬로 풀이하자면, 2차원 배열을 만들고 간선의 갯수만큼 반복문을 설정한 뒤 A 노드와 B 노드가 연결되어있다고 가정했을 때 matrix[a][b] = 1 로 배열을 채워주면 된다. 그러고 행을 기준으로 잡고 1로 표시되어 있는 열을 찾으면 되는데 즉, 서로 연결되어있는 노드를 찾아주는 것을 의미한다. 예를 들어, matrix[1][2] = 1 이라면 1번 노..
자바(Java) 알고리즘 문제풀이 절댓값 힙[백준 / 우선순위 큐]
11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 풀이 코드 우선순위 큐를 연습할 수 있는 문제로 PriorityQueue 를 사용해서 오름차순 출력을 뽑아내는 문제이다. 절댓값이 같은 경우에서 정렬의 재정의가 필요한데, PriorityQueue 의 인자로 Comparator 를 사용할 수 있으므로 활용하면 된다. 먼저 Math.abs() 메서드를 통해 절댓값을 구하고, 오름차순에 알맞게 정의를 해준다. abs1 이 abs2 보다 큰 경우 양수 즉, 자리바뀜이 일어나고, 음수일 때는 자리바뀜..
자바(Java) 알고리즘 문제풀이 동전0 [백준 / 그리디]
11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 풀이 코드 전형적인 그리디 문제로 가능한 큰 동전으로 연산하며 가능한 최소한의 동전 갯수를 구하는 문제이다. 그리디로 접근 시 주의해야할 점이 있는데, 문제 설명을 보면 (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 라고 명시 되어있는 것을 볼 수 있다. 쉽게 말하자면 각 동전의 가치는 서로 배수관계에 있다는 뜻이며 이 입력이 보장되기 때문에 그리디로..