GitHub 자세히보기

분류 전체보기 36

[프로그래머스] 삼각달팽이 for JAVA

문제설명 정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 1,000 이하입니다. 문제풀이 class Solution { public int[] solution(int n) { int[][] arr = new int[n][n]; int num = 1; // 배열에 들어갈 값 int max = n * (n + 1) / 2; // 최대값 int row = 0; // 행 int col = 0; // 열 arr[0][0] = 1; while (num < max) { // 왼..

[프로그래머스] 단어변환 for JAVA

문제설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변환할 수 있습니다. 두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 ..

[백준] 2447번 별찍기10 for JAVA

문제설명 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다. 제한사항 입력 첫째 줄에 N이 주어진다. N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3k이며, 이때 1 ≤ k < 8이다. 출력 첫째 줄부터 N번째 줄까지 별을 출력한다. 문제풀이 재귀함수 활용 import java.io.BufferedWr..

Algorithm/BOJ 2022.01.01

[백준] 11729번 하노이 탑 이동 순서 for JAVA

문제설명 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5개인 경우의 예시이다. 제한사항 입력 첫째 줄에 첫 번째 장대에 쌓인 원판의 개수 N (1 ≤ N ≤ 20)이 주어진다. 출력 첫째 줄에 옮긴 횟수 K를 출력한다. 두 번째 줄부터 수행 과정을 출력한다. 두 번째 줄부터 K개의 줄에 걸쳐 두 정수..

Algorithm/BOJ 2022.01.01

[알고리즘 이론] 재귀함수

재귀란? 주어진 문제의 해를 구하기 위해 동일하면서 더 작은 문제의 해를 이용하는 방법 재귀함수 함수 내부에서 직간접으로 자기 자신을 호출하는 함수 '기본 부분(기저조건)+ 유도 부분(실행부분)' 로 구성 함수호출은 프로그램 메모리 구조에서 스택 사용 → 메모리 및 속도에서 성능저하 발생 재귀함수는 반복구조보다 간결하고 이해하기 쉽다. 예시(팩토리얼) 1. 재귀적 표현 기본부분(기저조건) N=1일 때, n ! = n x (n-1)! 2. 재귀함수 코드 int factorial(int n) { if(n

Algorithm/이론 2022.01.01
1 ··· 4 5 6 7 8