java (25) 썸네일형 리스트형 Programmers - [풍선터트리기] 1. 문제 문제 설명 일렬로 나열된 n개의 풍선이 있습니다. 모든 풍선에는 서로 다른 숫자가 써져 있습니다. 당신은 다음 과정을 반복하면서 풍선들을 단 1개만 남을 때까지 계속 터트리려고 합니다. 임의의 인접한 두 풍선을 고른 뒤, 두 풍선 중 하나를 터트립니다. 터진 풍선으로 인해 풍선들 사이에 빈 공간이 생겼다면, 빈 공간이 없도록 풍선들을 중앙으로 밀착시킵니다. 여기서 조건이 있습니다. 인접한 두 풍선 중에서 번호가 더 작은 풍선을 터트리는 행위는 최대 1번만 할 수 있습니다. 즉, 어떤 시점에서 인접한 두 풍선 중 번호가 더 작은 풍선을 터트렸다면, 그 이후에는 인접한 두 풍선을 고른 뒤 번호가 더 큰 풍선만을 터트릴 수 있습니다. 당신은 어떤 풍선이 최후까지 남을 수 있는지 알아보고 싶습니다. .. Java - 17 DFS [java로 구현] DFS의 개념은 아래 글을 참고한다. doodreamcode.tistory.com/34?category=798601 자료구조 - 탐색알고리즘 DFS DFS(Depth - First search) 깊이 우선탐색이라고도 불리며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. DFS를 알아보기 전에 간단한 그래프를 알아보자 그래프 노드(node) 와 간선(edge)으 doodreamcode.tistory.com DFS는 모든 경우의 수를 탐색할때 사용한다. 조합, 순열등 다양한 곳에서 사용가능하다. DFS는 내부함수로서 구현이 된것이 아니기 때문에 필요할 때 마다 DFS라는 개념을 구현을 해야한다. 여기서는 java로 DFS를 짤 때의 틀을 정리하고자한다. class Solution { private.. Java - 16 [정규표현식, Pattern, Matcher 클래스] 정규표현식 (Regular Expression) - 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어 이다. - 전화번호, 주민등록번호, 이메일 등과 같이 특정 형식을 맞춰야 하고 사용자가 그러한 형식을 잘 맞추었는가 검증해야하는 경우가 있다. 이럴 때 정규표현식을 사용하여 걸러 낸다. 정규표현식 문법 정규 표현식 설명 ^ 문자열 시작 $ 문자열 종료 . 임의의 한 문자(단 \은 넣을 수 없음) * 앞 문자가 없을 수도 무한정 많을 수도 있음 + 앞 문자가 하나 이상 ? 앞 문자가 없거나 하나 있음 [ ] 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타냅니다. [] 내에서 ^ 가 선행하여 존재하면 not을 나타낸다. { } 횟수 또는 범위를 나타냅니다. ( ) 소괄.. 자료구조 - HEAP [완전이진트리, 힙, 우선순위 큐] 완전이진트리 - 루트 노드로 부터 왼쪽 자식 노드, 오른쪽 자식 노드 순서대로 데이터가 차례대로 삽입되는 트리이다. 즉, 마지막 깊이(level)만 제외하고 모든 레벨의 노드들이 모두 채워져있으며 될 수 있으면 왼쪽은 모두 채워 나가는 형태이다. A : 왼쪽은 완전 이진트리 이다. B: 오른쪽은 완전이진 트리가 아니다. HEAP - 완전 이진트리의 구조를 갖고 있다. - 부모 노드가 최대 이냐 최소이냐에 따라 최대힙, 최소힙으로 나눌 수 있다. 최소 힙 최소힙 구성함수 : Min - Heapify() - 아래에서 부모노드로 거슬러 올라가며, 부모보다 자신의 값이 더 큰 경우가 되어야한다. - 즉, 부모보다 자신의 값이 더 작은 경우 자신과 부모노드의 자리를 바꾼다. 최대 힙 최대힙 구성함수 : Max -.. Programmers - Hash [베스트 앨범] 1. 문제 문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호가 i인 노래가 재생.. Programmers - 완전탐색 [카펫] 1. 문제 문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로.. Java - 15 [HashSet, 람다식, 타입출력] HashSet - HashMap에서 키만 저장하는 클래스로서 보통 중복제거를 위해 사용한다. HashSet도 HashMap과 거의 동일하게 사용하지만 키에 대한 값이 없다. 중복제거를 하면 원소의 값을 읽거나 제거하거나 더하거나 탐색을 할때는 HashMap은 get()을 사용하면 되지만, HashSet은 그러한 것이 없다. 그럴때 iterator()를 사용한다. HashSet set = new HashSet(); permutation("", numbers, set); int count = 0; // HashSet 사용하기 // HashSet을 배열처럼 사용하기 위해서는 iterator()가 꼭 필요하다. // iterator().hasNext()는 다음 원소가 있는지 없는지 판별한다. while(set... Programmers - 완전탐색 [소수찾기] 1. 문제 문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. 013은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예 numbersreturn 17 3 011 2 입출력 예 설명 예제 #1 [1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다. 예제 #2 [0, 1, 1]으로는 소수 [11, 1.. 이전 1 2 3 4 다음