알고리즘27 [백준] 자바 5397 키로거 문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L의 길이 ≤ 1,000,000) 강산이가 백스페이스를 입력했다면, '-'가 주어진다. 이때 커서의 바로 앞에 .. 2021. 3. 27. [백준] 자바 4949 균형잡힌 세상 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()")와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. 모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다. 짝을 이루는 두 괄호가 있을 때, 그 사이에 있는.. 2021. 3. 25. [백준] 자바 10799 쇠막대기 문제 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않는다. 아래 그림은 위 조건을 만족하는 예를 보여준다. 수평으로 그려진 굵은 실선은 쇠막대기이고, 점은 레이저의 위치, 수직으로 그려진 점선 화살표는 레이저의 발사 방향이다. 이러한 레이저와 쇠막대기의 배치는 다음과 같이 괄호를 이용하여.. 2021. 3. 22. [백준] 자바 11721 열 개 씩 끊어 출력하기 문제 알파벳 소문자와 대문자로만 이루어진 길이가 N인 단어가 주어진다. 한 줄에 10 글자씩 끊어서 출력하는 프로그램을 작성하시오 입력 첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다. 출력 입력으로 주어진 단어를 열 개씩 끊어서 한 줄에 하나씩 출력한다. 단어의 길이가 10의 배수가 아닌 경우에는 마지막 줄에는 10개 미만의 글자만 출력할 수도 있다. 테스트 케이스 접근 count 변수를 만들어 10번 반복될 때마다 줄 바꿈 하게끔 코드를 작성하였습니다. 코드 package javaBaekjoon; import java.awt.desktop.SystemEventListener; import java.io... 2021. 3. 19. [알고리즘] 큐 queue 큐란? 큐는 자료구조 중 하나로, 알고리즘에 종종 사용됩니다. 주로 BFS에 사용되었습니다. 큐는 스택과는 다르게 스택모형에서 구멍이 뚫려있다고 생각하면 편합니다. 들어간 데이터는 그대로 제일 먼저 나옵니다. 실생활에서는 가게에서 계산대가 되겠습니다. 먼저 온 손님이 먼저 계산하듯이... 이를 FIFO(FIRST IN FIRST OUT)이라 합니다. 저는 자바로 큐를 구현해보았습니다. 큐 선언 Queue queue = new LinkedList(); Queue queue = new LinkedList(); Queue queue = new LinkedList(); 큐 값 추가 queue.add(1); queue.add(3); 큐 값 제거 queue.remove(); 큐 값 초기화 queue.clear();.. 2021. 3. 14. [알고리즘] 스택 stack 스택이란? 자료구조 중 하나로, 알고리즘 문제에서 종종 쓸 일이 있었습니다. 어떤 보관 상자가 있는데, 이 상자에 차곡차곡 데이터를 저장할 수 있습니다. 데이터는 보관하는 순으로 저장되며, 그림에서 보다시피 가장 나중에 넣은 데이터가 가장 윗부분에 위치하게 됩니다. 따라서 데이터를 꺼낼때도 가장 윗부분부터 꺼내야 합니다. 이런 구조를 LIFO(LAST IN FIRST OUT)이라 합니다. 저는 자바로 스택을 구현해보았습니다. STACK 선언 Stack stack = new Stack(); Stack stack = new Stack(); Stack stack = new Stack(); 스택 보관함에 자료 추가하는 법 stack.push(3); //3을추가함 스택에서 값 삭제 stack.pop(); //st.. 2021. 3. 13. 이전 1 2 3 4 5 다음 반응형