본문 바로가기

전체 글34

[Java] Deque 알아보기 Deque 이란? Deque 는 Double Ended Queue 의 약자로, 기존의 Queue나 Stack과는 다르게 양 방향에서 접근할 수 있는 자료구조이다. Deque의 구현체는 대부분 용량에 제한이 없지만, 용량 제한이 있는 구현체 또한 존재한다. 삽입, 제거, 조사 기능을 하는 메소드들을 제공하고, 각 메소드들은 실패 시 예외처리를 하는 형태와 null 이나 false를 리턴하는 형태가 존재한다. 구현 클래스 ArrayDeque Deque 인터페이스를 동적배열로 구현한 것으로, 용량 제한이 없고 필요에 따라 용량이 늘어난다. 스레드로부터 안전하지 않다. 대부분의 연산은 상수 시간 내에 가능하다. (remove, contains 등 제외) Stack이나 Queue를 구현할 시, Stack 과 Li.. 2023. 9. 4.
[Programmers] 개인정보 수집 유효기간 (Java/Python) 문제링크 문제 설명 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다. 당신은 오늘 날짜로 파기해야 할 개인정보 번호들을 구하려 합니다. 모든 달은 28일까지 있다고 가정합니다. 제한 사항 today는 "YYYY.. 2023. 9. 1.
[Programmers] 신규 아이디 추천 (Java/Python) 문제링크 문제설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력.. 2023. 9. 1.
[Programmers] 뒤에 있는 큰 수 찾기 (Java / Python) 문제링크 문제요약 정수 배열에서 각 원소들에 대해 자신보다 뒤에 있고 자신보다 큰 수 중에, 가장 가까운 수를 뒷 큰수라고 정의한다. 뒷 큰수가 존재하지 않는 경우, -1로 정의한다. 정수로 이루어진 배열 numbers가 있을 때, 모든 원소의 뒷 큰수를 차례로 담은 배열을 return하는 함수를 만들어 보자. 제한사항 4 ≤ numbers의 길이 ≤ 1,000,000 1 ≤ numbers[i] ≤ 1,000,000 문제풀이 1차원 적으로 보았을 때, 맨 첫 원소부터 순서대로 자신보다 큰 수를 찾으면 된다. 이런 풀이는 매우 간단하지만, 이중 for문을 사용하기 때문에 시간복잡도가 O(N^2)이 된다. 제한 사항을 확인해보면, 배열의 최대길이가 100만으로 매우 크기 때문에, 이러한 방법으로는 시간초과가.. 2023. 9. 1.