본문 바로가기

전체 글

(188)
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..
Programmers - DFS [불량 사용자] 1. 문제 문제 설명 개발팀 내에서 이벤트 개발을 담당하고 있는 무지는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 사용자라는 이름으로 목록을 만들어서 당첨 처리 시 제외하도록 이벤트 당첨자 담당자인 프로도 에게 전달하려고 합니다. 이 때 개인정보 보호을 위해 사용자 아이디 중 일부 문자를 '*' 문자로 가려서 전달했습니다. 가리고자 하는 문자 하나에 '*' 문자 하나를 사용하였고 아이디 당 최소 하나 이상의 '*' 문자를 사용하였습니다. 무지와 프로도는 불량 사용자 목록에 매핑된 응모자 아이디를 제재 아이디 라고 부르기로 하였습니다. 예를 들어, 이벤트에 응모한 전체 사용자 아이디 목록이 다음과 같다면 응모자 아이디 f..
Java - 16 [정규표현식, Pattern, Matcher 클래스] 정규표현식 (Regular Expression) - 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어 이다. - 전화번호, 주민등록번호, 이메일 등과 같이 특정 형식을 맞춰야 하고 사용자가 그러한 형식을 잘 맞추었는가 검증해야하는 경우가 있다. 이럴 때 정규표현식을 사용하여 걸러 낸다. 정규표현식 문법 정규 표현식 설명 ^ 문자열 시작 $ 문자열 종료 . 임의의 한 문자(단 \은 넣을 수 없음) * 앞 문자가 없을 수도 무한정 많을 수도 있음 + 앞 문자가 하나 이상 ? 앞 문자가 없거나 하나 있음 [ ] 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타냅니다. [] 내에서 ^ 가 선행하여 존재하면 not을 나타낸다. { } 횟수 또는 범위를 나타냅니다. ( ) 소괄..
자료구조 - HEAP [완전이진트리, 힙, 우선순위 큐] 완전이진트리 - 루트 노드로 부터 왼쪽 자식 노드, 오른쪽 자식 노드 순서대로 데이터가 차례대로 삽입되는 트리이다. 즉, 마지막 깊이(level)만 제외하고 모든 레벨의 노드들이 모두 채워져있으며 될 수 있으면 왼쪽은 모두 채워 나가는 형태이다. A : 왼쪽은 완전 이진트리 이다. B: 오른쪽은 완전이진 트리가 아니다. HEAP - 완전 이진트리의 구조를 갖고 있다. - 부모 노드가 최대 이냐 최소이냐에 따라 최대힙, 최소힙으로 나눌 수 있다. 최소 힙 최소힙 구성함수 : Min - Heapify() - 아래에서 부모노드로 거슬러 올라가며, 부모보다 자신의 값이 더 큰 경우가 되어야한다. - 즉, 부모보다 자신의 값이 더 작은 경우 자신과 부모노드의 자리를 바꾼다. 최대 힙 최대힙 구성함수 : Max -..
졸업작품 - 2017 [미소트레이닝 앱] 코드는 유실되어 관련 발표자료와 만든 과정이 담긴 문서들을 올립니다.
StudyGroup - [시작] 스터디 그룹의 모집과 시작 7월 부터 10월 초 까지 집에서 혼자 공부를 하며 방향을 잡고 인터넷 커뮤니티에서 비대면으로 나마 온라인 모각코등을 하며 외로움을 달래며 공부를 하였다. 사실 나는 군대체질이긴하다. 사람들 속에 있어야 개인의 역량이든 팀의 역량이든 훨씬 효율이 높고 스트레스도 적다. 그동안 혼자 방안에서만 코딩을 했으니 효율이 낮은건 어쩔 수 없다 하더라도 스트레스가 컸다. 코딩을 해도 나 자신의 성취감만 있을 뿐 다른사람들은 어떻게 사는지 모르니 큰 피드백이 없는 것이다. 이런 기분은 분명히 나만 느끼는 것이 아닐 것이다. 다양한 기업에서 코드리뷰를 하고 모각코를 하고 혹은 교육기관에서 팀프로젝트를하고 괜히 여러사람들이 같이 코딩을 하거나 공부를 하는게 아닐 것이다. 라는 생각이 들었다. ..
Programmers - Hash [베스트 앨범] 1. 문제 문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호가 i인 노래가 재생..