본문 바로가기

728x90

알고리즘(w.KOTLIN)/재귀

(4)
[백준][코틀린][2580] 스도쿠 https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 문제 풀이 1. (0, 0) 을 처음으로 해서 완전 탐색을 한다. 2. sudoku 배열의 sudoku[row][col] 값이 0인지 확인 한다. 2-1. 0일 경우 sudoku[row][col] 값이 넣을 수 있는 숫자를 1 부터 9까지 탐색하여 찾는다. 2-2. 탐색할 때 N-Queen 과 비슷한 로직을 이용하여 현재 기준이 되는 row, col 을 이용하여 같은 열에 동일한 숫자가 있는 지 ..
[백준][코틀린][16198] 에너지 모으기 https://www.acmicpc.net/problem/16198 16198번: 에너지 모으기 N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있 www.acmicpc.net 문제 풀이 1. 구슬의 무게를 저장하는 리스트 W 를 선언한다. 2. 구슬을 두 번째 부터 (마지막 - 1)번째 까지 모두 탐색하는 DFS 를 수행한다. 3. X로 선택될 경우 리스트 W 에서 제거한다. 이때 DFS 결과가 return 되어 다음 코드가 수행될 때 제거된 X 를 W 에 다시 업데이트 하는 로직을 처리한다. 코드 import java.io.* private var result ..
[백준][코틀린][14888] 연산자 끼워 넣기 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 문제 풀이 1. 입력으로 주어지는 연산자를 개수를 포함하여 op 배열에 저장한다. 2. 저장된 op 배열의 모든 경우의 수를 확인하는 DFS 탐색을 수행한다. 3. 최대/최소 값을 출력한다. 코드 import java.io.* private var max = Int.MIN_VALUE private var min = Int.MAX_VALUE f..
[알고리즘][KOTLIN] 숫자 카드 나누기 https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 1. 철수와 영희의 각각의 카드 배열의 최대 공약수(GCD) 를 재귀를 이용하여 구한다. 2. 1번에서 구해진 철수와 영희의 최대 공약수가 조건에 따라 서로의 카드 숫자를 나눌 수 있는 지 확인하여 나눠지는 경우 최대 공약수 값을 0으로 저장한다. 3. 철수와 영희의 최대 공약수 중 최대 값을 구한다. class Solution { fun solution(arrayA: IntArray..