level 3~424 프로그래머스(종이접기) - Java [종이 접기] https://programmers.co.kr/learn/courses/30/lessons/62049 코딩테스트 연습 - 종이접기 직사각형 종이를 n번 접으려고 합니다. 이때, 항상 오른쪽 절반을 왼쪽으로 접어 나갑니다. 다음은 n = 2인 경우의 예시입니다. 먼저 오른쪽 절반을 왼쪽으로 접습니다. 다시 오른쪽 절반을 왼쪽�� programmers.co.kr * 로직 n번째 접었을 때 나오는 값은 맨 처음 접히는 가운데(0)을 기준으로 규칙성이 나타난다 왼쪽엔 이전 n-1번째 접었을 때 나오는 값 오른쪽엔 왼쪽에 있는 값의 보수이다 이를 기반으로 dp를 진행한다 (dp[1] = 0) n=2부터 위의 규칙대로 포문 로직을 진행해준다 class Solution { public int[] sol.. 2020. 5. 25. 알고리즘(자동 완성) * 알고리즘 트라이 * 로직 트라이 구조를 통해 입력된 단어들의 횟수를 카운팅 해놓는다 각 단어들을 한 글자씩 검색 해당 글자가 1번만 사용되었다면 이후의 글자도 하나만 존재하기 때문에 해당 사이클 횟수를 리턴 만약 검색하려는 단어의 마지막 글자까지 왔다면 => 해당 단어의 수를 리턴(사이클 횟수와 같음) 위 과정을 반복해 답을 누적한다 //자동완성 class Trie { public NodeInfo root; public Trie() { this.root = new NodeInfo(' '); } public void insert(String word) { NodeInfo current = root; for(int s=0; s 2020. 3. 31. 알고리즘(블록 게임) [블록 게임] * 로직 문제에 주어진 블록을 직사각형으로 채우게 된다면 사이즈는 2*3 or 3*2 형태가 된다 (0,0)부터 기준점을 한 칸씩 옮기면서 2*3인 경우와 3*2인 경우를 고려한다 해당 사이즈만큼 탐색하면서 값이 0인 곳에서는 검은 블록을 위에서부터 떨어뜨릴 수 있는지 확인한다 만약 중간에 다른 블록이 있다면 불가능 없다면 가능 검은 블록을 사용한 개수를 카운팅한다 해당 사이즈만큼 탐색하면서 만약 검은 블록의 개수를 2개 초과한 경우엔 불가능 처리를 한다 (주어진 블록들의 개수는 항상 4개이기 때문에 -> 6 - 2 = 4) 검은 블록의 개수까지 만족한다면 해당 사이즈만큼의 값은 0으로 갱신한다 위 과정을 반복하며, 만약 모든 기준점들을 다 돌았을때 제거된 블록이 하나도 없다면 종료한다 /.. 2020. 3. 30. 이전 1 2 3 4 ··· 8 다음