본문 바로가기

분류 전체보기45

[알고리즘] [5] 재귀 1. 반복 (Iteration)과 재귀 (Recursion) 수행하는 작업이 완료될 때까지 계속 반복하는 것을 반복이라고 한다. 재귀 : 주어진 문제의 해를 구하기 위해 더 작은 문제로 쪼개고 그 결과를 합하는 것 반복은 현재 행위를 끝내고 다음 반복으로 가므로 다시 돌아올 수 없다! 재귀 함수 (recursive function) 함수의 정의 및 역할을 명확히 한다. >> 현재의 동작과 같은 형태를 취할 수 있어야 한다. 함수 수행에 필요한 매개 변수를 설계한다. 재귀의 종료 조건이 반드시 필요하다. 기본 부분 (basic part)와 유도 부분 (inductive part)로 구성된다. >> 재귀의 끝과 재귀 파생 함수 호출은 스택 메모리 구조를 사용한다. 2024. 1. 29.
[알고리즘] [4] 문제 해결 1. 알고리즘 컴퓨터 분야에서 알고리즘을 표현하는 방법은 크게 의사코드와 순서도 두 가지다. 의사코드는 자연어를 활용하여 서술하는 형태로 작성할 수 있다. 좋은 알고리즘? 정확성 : 얼마나 정확하게 작동하는지 >> 반례를 찾는다. 작업량 : 더 적은 연산으로 결과를 얻어낸다. 메모리 사용량 : 더 적은 메모리를 사용한다. 단순성 최적성 : 더 이상의 개선의 여지 없이 최적화 시간 복잡도 : 연산의 작업량, 수행 시간 Best Case : 빅 오메가 표기법 Worst Case : 빅 오 표기법 >> 알고리즘 문제 해결 시에는 빅 오 표기법을 사용한다. Average Case : 빅 세타 표기법 공간 복잡도 : 메모리 사용량, 생성하는 객체, 배열 등의 크기 복잡도의 점근적 표기 시간 복잡도 함수 중 가장 .. 2024. 1. 29.
[BOJ] [JAVA] 14442번 벽 부수고 이동하기 2 BFS를 공부하고 관련 문제를 풀었다. 그 중 하나를 적어보기로 했다. 14442번: 벽 부수고 이동하기 2 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net import java.io.*; import java.util.*; // Hammer 클래스는 (x, y) 좌표에 위치한 사람이다. // 사람은 h 개의 해머를 가지고 있고 // 현재 좌표에 distance 만큼의 거리를 이동하여 도달해있다. class Hammer { int x; int y; int h; int di; public Hammer(int x, .. 2024. 1. 27.
[BOJ] [JAVA] 1012번 유기농 배추 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net BFS를 이용해서 해결했다. BFS의 개념 자체는 어렵지 않은데, 코드를 깔끔히 구현하는 방법을 모르겠다. 내가 생각한대로 코드를 작성해봤다. 좌표값을 Queue에 집어넣어야하는데, 방법을 모르고 qX, qY로 x, y 좌표를 각각 받았다. Point라는 걸로 받으면 된다더라,, 그리고 나는 현재 depth에서 확인해야 할 노드의 개수를 그 전 depth에서 계산하고, 다음 depth에게 알려주는 방식으로 했는데 정석이 어떤지는 확인해봐야겠다! package BOJ; imp.. 2024. 1. 20.