Problem Solving

[알고리즘] 14. 예외 케이스 처리법

[알고리즘] 14. 예외 케이스 처리법지난 글에서는 정렬 기준 만들기에 대해 정리했습니다. 이번 글에서는 알고리즘 문제를 풀 때 자주 틀리는 원인 중 하나인 예외 케이스 처리법에 대해 알아보겠습니다.알고리즘 문제는 예제 입력만 맞는다고 끝이 아닙니다. 채점에는 다양한 입력이 들어오기 때문에, 평범한 경우뿐 아니라 가장 작거나 큰 값, 중복, 음수, 0, 빈 값 같은 상황도 고려해야 합니다.예외 케이스는 일반적인 흐름에서는 잘 보이지 않지만, 정답 여부를 크게 좌우하는 특수한 입력 상황입니다.1. 예외 케이스란?예외 케이스는 코드가 일반적인 입력에서는 잘 동작하지만, 특정 입력에서는 잘못된 결과를 낼 수 있는 상황을 말합니다.예를 들어 배열에서 최댓값을 찾는 문제를 생각해보겠습니다.int[] numbers..

[알고리즘] 13. 정렬 기준 만들기

[알고리즘] 13. 정렬 기준 만들기지난 글에서는 빈도수 계산에 대해 정리했습니다. 이번 글에서는 알고리즘 문제에서 매우 자주 등장하는 정렬 기준 만들기에 대해 알아보겠습니다.정렬은 데이터를 일정한 순서로 나열하는 작업입니다. 숫자를 작은 순서대로 정렬하거나, 문자열을 사전순으로 정렬하거나, 객체를 특정 조건에 맞게 정렬할 때 사용합니다.정렬의 핵심은 단순히 나열하는 것이 아니라, 어떤 기준으로 앞뒤를 결정할지 정하는 것입니다.1. 정렬이란?정렬은 여러 데이터를 정해진 기준에 따라 순서대로 배치하는 것입니다.예를 들어 숫자 배열이 있다고 하겠습니다.5 2 8 1 3이 값을 오름차순으로 정렬하면 다음과 같습니다.1 2 3 5 8반대로 내림차순으로 정렬하면 다음과 같습니다.8 5 3 2 1정렬은 알고리즘 문..

[알고리즘] 12. 빈도수 계산

[알고리즘] 12. 빈도수 계산지난 글에서는 카운팅 배열에 대해 정리했습니다. 이번 글에서는 알고리즘 문제에서 정말 자주 등장하는 빈도수 계산에 대해 알아보겠습니다.빈도수 계산은 어떤 값이 몇 번 등장했는지 세는 작업입니다. 숫자, 문자, 문자열, 단어 등 다양한 데이터를 대상으로 사용할 수 있습니다.빈도수 계산은 데이터가 몇 번 등장했는지 기록하고, 그 횟수를 이용해 문제를 해결하는 방법입니다.1. 빈도수 계산이란?빈도수는 어떤 값이 등장한 횟수를 의미합니다. 예를 들어 다음 숫자 배열이 있다고 생각해보겠습니다.1 2 2 3 3 3 4각 숫자의 빈도수는 다음과 같습니다.값빈도수11번22번33번41번이처럼 각 값이 몇 번 나왔는지 세는 것이 빈도수 계산입니다.2. 빈도수 계산이 필요한 상황알고리즘 문제에..

[알고리즘] 11. 카운팅 배열

[알고리즘] 11. 카운팅 배열지난 글에서는 숫자 처리와 자리수에 대해 정리했습니다. 이번 글에서는 알고리즘 기초 구현에서 정말 자주 사용하는 카운팅 배열에 대해 알아보겠습니다.카운팅 배열은 숫자나 문자가 몇 번 등장했는지 빠르게 세기 위해 사용하는 배열입니다. 처음에는 단순해 보이지만, 빈도수 계산, 중복 확인, 최빈값 찾기, 알파벳 개수 세기 같은 문제에서 매우 자주 사용됩니다.카운팅 배열은 값의 등장 횟수를 배열의 인덱스를 이용해 저장하는 방법입니다.1. 카운팅 배열이 필요한 이유배열 안에 어떤 숫자가 몇 번 나왔는지 세야 하는 상황을 생각해보겠습니다.1 3 2 1 3 1 2이 숫자들에서 1은 3번, 2는 2번, 3은 2번 등장합니다. 이런 등장 횟수를 저장하기 위해 카운팅 배열을 사용할 수 있습니..

[알고리즘] 10. 숫자 처리와 자리수

[알고리즘] 10. 숫자 처리와 자리수지난 글에서는 문자열 자르기와 비교에 대해 정리했습니다. 이번 글에서는 알고리즘 문제에서 자주 등장하는 숫자 처리와 자리수에 대해 알아보겠습니다.숫자 문제는 단순 계산처럼 보이지만, 실제로는 나머지 연산, 몫 연산, 자리수 분리, 문자열 변환 등을 함께 사용하는 경우가 많습니다. 특히 각 자리수를 하나씩 확인해야 하는 문제는 알고리즘 기초 구현에서 매우 자주 나옵니다.숫자 처리의 핵심은 몫과 나머지를 이용해 원하는 자리의 값을 분리하는 것입니다.1. 숫자 처리에서 자주 나오는 상황알고리즘 문제에서 숫자는 단순히 더하고 빼는 용도로만 나오지 않습니다. 아래처럼 숫자의 구조를 분석해야 하는 경우가 많습니다.각 자리수의 합 구하기숫자를 뒤집기특정 숫자가 몇 번 나오는지 세..

[알고리즘] 09. 문자열 자르기와 비교

[알고리즘] 09. 문자열 자르기와 비교지난 글에서는 문자열 처리 기초에 대해 정리했습니다. 이번 글에서는 문자열 문제에서 자주 사용하는 문자열 자르기와 문자열 비교를 알아보겠습니다.알고리즘 문제에서는 문자열 전체를 그대로 사용하는 경우도 있지만, 필요한 부분만 잘라서 비교하거나, 특정 기준으로 나누어 처리해야 하는 경우가 많습니다.문자열 자르기와 비교는 문자열 문제를 해결하기 위한 가장 기본적인 도구입니다.1. 문자열 자르기가 필요한 이유문자열 문제에서는 전체 문자열이 아니라 일부 구간만 필요한 경우가 자주 있습니다.앞의 몇 글자만 확인하기뒤의 몇 글자만 확인하기특정 구간만 잘라내기공백이나 기호를 기준으로 나누기잘라낸 문자열끼리 비교하기예를 들어 주민번호 앞자리, 파일 확장자, 날짜의 연도와 월, 특정..

[알고리즘] 08. 문자열 처리 기초

[알고리즘] 08. 문자열 처리 기초지난 글에서는 배열과 인덱스 처리에 대해 정리했습니다. 이번 글에서는 알고리즘 문제에서 배열만큼 자주 등장하는 문자열 처리에 대해 알아보겠습니다.문자열은 문자들이 순서대로 모여 있는 데이터입니다. 이름, 단어, 문장, 숫자로 이루어진 문자열 등 다양한 형태로 문제에 등장합니다.문자열 처리는 문자의 위치를 확인하고, 비교하고, 필요한 문자만 골라내는 과정입니다.1. 문자열이란?문자열은 여러 개의 문자가 순서대로 이어진 값입니다. Java에서는 문자열을 String 타입으로 다룹니다.String name = "Java";String word = "algorithm";String sentence = "Hello World";문자열도 배열처럼 순서가 있습니다. 그래서 각 문자..

[알고리즘] 07. 배열과 인덱스 처리

[알고리즘] 07. 배열과 인덱스 처리지난 글에서는 알고리즘 문제 풀이 순서에 대해 정리했습니다. 이번 글부터는 알고리즘 문제에서 가장 자주 등장하는 기초 구현 영역으로 들어갑니다.그 첫 번째 주제는 배열과 인덱스입니다. 배열은 여러 개의 값을 한 번에 다룰 수 있는 가장 기본적인 자료구조입니다.배열은 같은 종류의 데이터를 순서대로 저장하는 공간이고, 인덱스는 그 위치를 가리키는 번호입니다.1. 배열이란?배열은 여러 개의 값을 하나의 이름으로 관리할 수 있게 해주는 자료구조입니다. 예를 들어 학생 5명의 점수를 저장해야 한다고 생각해보겠습니다.배열을 사용하지 않으면 변수를 여러 개 만들어야 합니다.int score1 = 80;int score2 = 90;int score3 = 70;int score4 =..