전체 글 썸네일형 리스트형 프로그래머스 - 자물쇠와 열쇠(Java) 구현문제입니다. 문제를 푸는데 특별한 알고리즘이 필요하지는 않습니다. 자물쇠와 열쇠가 주어졌을 때, 열쇠를 이동 및 회전시켜 자물쇠를 열 수 있는가에 대해 묻는 문제입니다. 각각 이차원 배열로 주어집니다. 0과 1로 이뤄져 있는 자물쇠의 2차원 배열의 값을 열쇠로 하여금 전부 1로 바꿔주면 됩니다. 문제 조건에 의해, 열쇠는 자물쇠 영역을 벗어날 수 있습니다. 즉, 여기서 알 수 있는 것은 자물쇠 배열을 확장시켜야 한다는 것입니다. 자물쇠 영역을 벗어날 수 있는 키를 맞춰보기 위해서는 확장을 시켜야 합니다. 자물쇠와 키를 맞춰본다는 것은 적어도 영역 한 곳은 맞물려 있다는 의미겠죠? 그렇기 때문에 자물쇠와 키의 크기를 각각 n과 m이라고 하면 필요한 영역의 길이는 n+(m-1)*2인 것입니다. [2를 곱.. 더보기 프로그래머스 - 문자열 압축(Java) 구현 문제입니다. 특정 알고리즘이 필요하지 않는 문제입니다, 단, 시간을 줄이기 위해서는 한 가지 아이디어가 필요합니다. "한 번에 압축될 수 있는 최대 문자의 크기는 전체의 절반이다." 입니다. 'aabbcc'가 있다고 가정하겠습니다. 이 문자를 압축하면 '2a2b2c'입니다. 문자열의 길이는 6이고, 한 번에 최대로 압축될 수 있는 문자의 크기는 2입니다. 'aaabbb'가 있다고 가정하겠습니다. 이 문자를 압축하면 '3a3b'입니다. 문자열의 길이는 6이고, 한 번에 최대로 압축될 수 있는 문자의 크기는 3입니다. 'ababcdcdababcdcd'가 있다고 가정하겠습니다. 이 문자를 압축하면 '2ababcdcd'입니다. 문자열의 길이는 16이고, 한 번에 최대로 압축될 수 있는 문자의 크기는 8입니.. 더보기 프로그래머스 - 괄호 변환(Java) dfs 문제입니다. '('와 ')'가 같은 개수로 주어졌을 때, 괄호가 올바르게 닫히도록 만드는 문제입니다. 구현 방법은 이미 문제 자체에 주어져 있습니다. 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 4. 문자열 u가 "올바른 괄호 문자열"이 아니라면 아래 과정을 수행합니다. 4-1. 빈 문자열에 첫 번째 문자로 '('를 붙입니다. 4-2. 문자열 v에 대해 1.. 더보기 자바의 정석 - 14.2 스트림 14.2.1 스트림이란? Array, List, Map과 같은 데이터 소스를 추상화하여 데이터 소스가 무엇이던 간에 같은 방식으로 다룰 수 있게 해 주는 것 String[] strArr = {"aaa", "ddd", "ccc"}; List strLsit = Arrays.asList(strArr); Stream strStream1 = strList.stream(); Stream strStream2 = Arrays.stream(strArr); // 배열이든 리스트든 같은 방식으로 출력 // 메서드 참조 사용 strStream2.sorted().forEach(System.out::println); 스트림은 데이터를 읽기만할 뿐, 데이터 소스를 변경하지 않음 필요시에는 정렬된 결과를 컬렉션이나 배열에 담아서 반.. 더보기 백준 - 4386 별자리 만들기(Java) https://www.acmicpc.net/problem/4386 4386번: 별자리 만들기 도현이는 우주의 신이다. 이제 도현이는 아무렇게나 널브러져 있는 n개의 별들을 이어서 별자리를 하나 만들 것이다. 별자리의 조건은 다음과 같다. 별자리를 이루는 선은 서로 다른 두 별을 일 www.acmicpc.net 크루스칼(Kruskal) 문제입니다. 크루스칼은 유니온-파인드(Union-Find)를 이용해서 최소 스패닝 트리를 만드는 문제입니다. 크루스칼은 기본적으로 최소의 간선만을 선택하여 트리를 만들기 때문에, 시작 정점은 존재하지 않습니다. (시작 정점이 있으면 프림을 사용하면 됩니다.) 문제에서 별들의 2차원 에서의 x,y 좌표만 주어지기 때문에 모든 별들의 거리는 직접 구하셔야합니다. 여기서 사용되는.. 더보기 백준 - 1197 최소 스패닝 트리(Java) https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 크루스칼(Kruskal) 문제입니다. 시점이 없고, 최소 스패닝 트리를 구하는 문제이기 때문에 크루스칼 알고리즘을 사용해야 한 다는 것을 알 수 있습니다. 최소 스패닝 트리란, 사이클 없이 모든 노드를 연결할 때 가중치의 합이 최소가 되도록 만드는 트리입니다. 크루스칼 알고리즘은 기본적으로 유니온-파인드(Union-Find)를 사용합니다. 혹시, 유니.. 더보기 백준 - 1717 집합의 표현(Java) https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net 유니온-파인드(Uion-Find) 문제입니다. 0~n까지의 집합이 주어지고, m번 만큼 특정 두 개의 원소가 같은 집합에 속하는지 알아내는 문제입니다. 문제를 해결하기 위해서는 길이가 n인 배열을 사용해야 합니다. 각 배열의 값은 자신의 부모 노드를 가리키게 해야 합니다. 물론 아무런 연결이 없는 초기에는 자기 자신을 가리키게 하면 됩니다. 다음 그림과 같.. 더보기 백준 - 4803 트리(Java) https://www.acmicpc.net/problem/4803 4803번: 트리 입력으로 주어진 그래프에 트리가 없다면 "No trees."를, 한 개라면 "There is one tree."를, T개(T > 1)라면 "A forest of T trees."를 테스트 케이스 번호와 함께 출력한다. www.acmicpc.net 트리 문제입니다. 테스트 케이스마다 그래프가 주어지고, 해당 그래프에 트리가 몇 개인지 출력을 하는 문제입니다. 트리는 부모-자식이 계층 구조를 가지는 비선형 자료구조입니다. 계층 구조를 지니기 때문에, 사이틀이 발생해서는 안됩니다. 위 그림과 같이, 트리는 그래프와 달리 사이클이 생기면 안됩니다. 두 개의 노드를 연결하는 트리의 간선 개수는 몇개 일까요? 네, 1개 입니다. 세.. 더보기 이전 1 ··· 31 32 33 34 35 36 37 ··· 48 다음