본문 바로가기

java98

[Java] Graph 그래프 / 인접 행렬 / 인접 리스트 뇌를 자극하는 알고리즘 (박상현 저)를 참고해 정리한 내용입니다. Graph란? 객체 사이의 연결 관계를 표현할 수 있는 자료구조 정점의 집합과 간선의 집합의 결합 즉, 정점과 간선으로 이루어진 자료구조의 일종 G : 그래프 Vertex : = 노드(node) 또는 정점의 집합 Edge : 간선의 집합 (= link) 라고 했을 때, G = (V, E)이다. 간선으로 연결되어 있는 두 정점을 가리켜 서로 '인접(adjacent)' 또는 이웃 관계에 있다고 말한다. (A, B), (A, D), (A, E), (B, C), (B, E), (C, D)가 서로 이웃 관계에 있다. 이렇게 간선을 통해 서로 이웃이 된 각 정점은 그래프 안에서의 길을 형성하기도 한다. 예를 들어 정점 A에서 정점 C까지는 A, B,.. 2020. 5. 9.
[Java] Splitting String and put it on int array Splitting String and put it on int array int[] intArray = Arrays.stream(input.split(",")) .mapToInt(Integer::parseInt) .toArray(); https://stackoverflow.com/questions/8348591/splitting-string-and-put-it-on-int-array 2020. 5. 6.
[백준 - Java] 1463번 : 1로 만들기 문제 더보기 https://www.acmicpc.net/problem/1463] 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 1. 작게 만들면 가장 최소로 연산을 할 수 있을까? (X) 그렇다면 무조건 3으로 나눌 수 있으면 3으로 나누는 것이 가장 최고일 것. 3 나누기 > 2 나누기 > 1 빼기 이러한 우선순위로 연산을.. 2020. 5. 5.
[프로그래머스 - Java] 비밀지도(2018 KAKAO BLIND RECRUITMENT [1차]) 링크 https://programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 처음 코드 처음에 1차원적으로 생각한대로 구현했다. 너무 길고 불필요한 코드도 많다고 생각이 든다. 하나하나 사서 고생하는 느낌 *십진수 이진수로 변환할 때는 toBinaryString() 사용 class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String[] answer = new String[n]; String[.. 2020. 5. 3.
[백준 - Java] 17298번 : 오큰수 문제 더보기 https://www.acmicpc.net/problem/17298 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다. 예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에.. 2020. 5. 3.
[Java] String 숫자 int 배열로 만들기 1. charAt사용 for문으로 만들기 String str = "12345"; int[] digits = new int[str.length()]; for(int i=0; i 2020. 5. 3.
[프로그래머스 - Java] 크레인 인형뽑기 게임(2019 카카오 개발자 겨울 인턴쉽) 링크 https://programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음 코드 import java.util.*; class Solution { public int solution(int[][] board, int[] moves) { int[][] temp = board; int answer = 0; Stack st = new Stack(); for(int i = 0; i < moves.length; i++) { for(int j = 0; j < board.length;.. 2020. 4. 29.
[Java] Collection Framework2 - Set(HashSet / LinkedHashSet / TreeSet) Set 컬렉션 저장 순서가 유지되지 않음 객체를 중복해서 저장할 수 없음 하나의 null만 저장할 수 있음 Set 인터페이스의 구현 클래스로 HashSet, LinkedHashSet, TreeSet 등이 있다. Set 인터페이스 메소드 기능 메소드 설명 객체 추가 boolean add(E e) 주어진 객체를 저장 객체가 성공적으로 저장되면 true 리턴 중복 객체면 false 리턴 객체 검색 boolean contains(Object o) 주어진 객체가 저장되어 있는지 여부 반환 - boolean containsAll(Collection c) isEmpty() 컬렉션이 비어 있는지 조사 Iterator iterator() 저장된 객체를 한 번씩 가져오는 반복자 리턴 int size() 저장되어 있는 전체.. 2020. 4. 25.
[백준 - Java] 1260번 : DFS와 BFS 문제 더보기 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. www.acmicpc.net 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 .. 2020. 4. 25.
[Java] DFS 깊이 우선 탐색 - 인접리스트 / 인접행렬로 구현 DFS 깊이 우선 탐색 (Depth Fisrt Search) "더 나아갈 길이 보이지 않을 때까지 깊이 들어간다"를 원칙으로 그래프 내의 정점을 방문하는 알고리즘이다. 미로 찾기처럼 그래프의 정점을 타고 깊이 들어가다가 더 이상 방문해왔던 정점 말고는 다른 이웃을 갖고 있지 않은 정점을 만나면 뒤로 돌아와 다른 경로로 뻗어있는 정점을 타고 방문을 재개하는 방식으로 동작한다. * 루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법 * 사용하는 경우: 모든 노드를 방문하고자 하는 경우에 이 방법을 선택한다. (완전 탐색 알고리즘에 자주 이용됨) DFS의 특징 자기 자신을 호출하는 순환 알고리즘의 형태 트리 순회(전위, 중위, 후위 순회.. 2020. 4. 25.
반응형