알고리즘
-
문자열(1) - 문자의 배열과 StringBuilder(feat.프로그래머스 12932번)알고리즘/이론 2024. 1. 23. 17:32
✍️ 문자의 배열 자바에서 String 클래스로 표현되는 문자열은 내부적으로 문자의 배열을 이용하여 표현합니다. 이 문자열 내 문자를 가져오는 방법은 두 가지입니다. String.charAt(int index) String.toCharArray() String.charAt() 메서드는 주어진 인덱스에 있는 문자 하나를 char 타입으로 가져오고, String.toCharArray() 메서드는 모든 문자가 들어있는 char[] 타입의 데이터를 반환합니다. 다음 코드 예시를 보겠습니다. String test = "Test" // e char second = test.charAt(1); // {T, e, s, t} char[] testToArray = test.toCharArray(); 이렇듯 두 메서드의 차..
-
2차원 배열(2) - dx, dy로 방향을 정하는 방법(feat. 프로그래머스 68645번)알고리즘/이론 2024. 1. 11. 20:20
♻️ dx와 dy 이전 2차원 배열 포스팅에서는 2차원 배열의 개념과 배열에서 x, y 축을 가정하여 어떻게 각 원소에 접근하는지 다뤘습니다. 2차원 배열에서는 방향을 이용하는 문제가 자주 나옵니다. 이러한 문제의 대부분은 방향만 다를 뿐 각 방향에서 수행하는 동작을 같게하여 해결할 수 있습니다. 그런데 각 방향마다 구현을 다르게 한다면, 실수했을 때 디버깅하기 힘들 뿐만 아니라 로직을 바꾸려면 모든 코드를 바꿔야합니다. 이러한 불편함을 해결하고자 x축과 y축의 변화량인 dx, dy를 통해 적용하는 것까지 이번 포스팅에서 다뤄보겠습니다. 우선 여기서 '변화량'이라는 것은 특정 방향으로 이동할 때 해당 좌표 값이 어떻게 변화하는 지입니다. 다음 그림은 하나의 좌표와 해당 좌표 상하좌우에 있는 좌표와의 좌표..
-
2차원 배열(1) - 배열과 접근법알고리즘/이론 2024. 1. 2. 18:07
✍️ 2차원 배열 1. 2차원 배열 이해하기 배열에는 int, String 등 다양한 자료형의 데이터를 담을 수 있습니다. 2차원 배열도 마찬가지로 원소의 자료형이 1차원 배열일 뿐인 또 다른 배열입니다. 이는 2차원 배열에서는 특정 인덱스에 접근했을 때 그 원소는 1차원 배열이라는 것을 의미합니다. 따라서, 2차원 배열의 원소에 접근하려면 먼저 특정 인덱스의 1차원 배열에 접근한 후, 다시 한 번 1차원 배열의 원소에 접근해야합니다. 2. x축과 y축을 이용한 2차원 배열 접근하기 1) x축과 y축 2차원 배열은 주로 다음과 같이 그림과 같이 행과 열로 구성된 격자형 형태로 표현을 하게 됩니다. 또한, 2차원 배열을 이렇게 사각형 형태로 다룰 때에는 행과 열이라고 칭하기 보다는 x, y 축 좌표를 이용..
-
시간 복잡도와 빅오(Big-O) 표기법알고리즘/이론 2023. 11. 19. 21:28
🧑💻 시간 복잡도란? 코드의 실행 시간이 어떤 요인으로 결정되는지 나타내는 시간과 입력 데이터의 함수 관계입니다. 1. 빅오(Big-O) 표기법 1) What? 코드의 효율성을 검사하는 데 사용하는 시간 복잡도의 대표적인 표기법 중 하나이며, 빅오 표기법은 알고리즘이 겪을 수 있는 최악의 경우에 걸리는 시간과 입력 데이터 간의 상관관계를 표기합니다. 예를 들어, 입력 크기가 N이고, 이와 비례하는 시간이 걸리는 알고리즘의 시간 복잡도는 O(N)입니다. 2) Example 다음과 같은 코드에서 길이가 N인 배열이 있다고 가정합시다. private int search(int[] array, int target) { for (int i = 0; i < array.length; i++) { if (array[..