프로그래밍을 하다 보면 좌표와 배열을 매핑하는 작업이 필요할 때가 많습니다. 특히 2차원 배열을 다루는 알고리즘 문제에서는 좌표 (x, y)를 배열에 올바르게 맵핑하는 것이 중요합니다. 필자 또한 헷갈리는 부분이 있어 이번 글에서는 좌표와 배열의 매핑 방법을 자세히 알아보겠습니다. 좌표와 배열의 기본 개념❓먼저 좌표와 배열의 기본 개념에 대해서 정리해 봅시다. 좌표 (x,y)좌표는 공간에서 위치를 나타내기 위해 사용하는 숫자 쌍 또는 그 이상의 수의 집합입니다.좌표는 일반적으로 x는 열(column), y는 행(row)를 의미합니다.예를 들어 좌표 (3,4)는 x축에서 3만큼 오른쪽으로, y축에서 4만큼 위쪽으로 이동한 위치를 나타냅니다.2차원 배열[행][열]배열은 동일한 타입의 변수들을 하나의 묶음으로..
문제설명입력 & 출력나의 풀이먼저 이번 문제는 정사각형 N(지도의 크기)이 주어질 때 집이 있는 곳은 1 없는 곳은 0입니다. 이때 연결되어 있는 집을 단지로 구분하여 단지의 수와 크기를 출력하는 문제입니다. 먼저 가독성을 높이기위하여 계속 사용되는 변수들을 전역 변수로 선언해주고, 단지가 몇 개인지 모르기 때문에 동적으로 크기를 조절할 수 있도록 ArrayList를 초기화해줍니다. 또한 상하좌우로 이동할 것이기 때문에 dx와 dy를 초기화해 줍니다. 주석을 달아놔서 따로 설명은 필요 없을 것 같습니다. 먼저 DFS를 동작할 함수를 선언합니다. 현재 위치를 방문했음을 표시하기 위해 해당 위치를 `true`로 설정하고, 단지 내 집의 수를 나타내는 `count`를 증가시킵니다. 그다음, 상하좌우로..
문제설명입력 & 출력나의 풀이 이번 문제의 주요 목표는 '-'와 '|'로 이루어진 바닥 장식의 개수를 세는 것입니다. 이를 위해 DFS를 사용하여 각 장식의 연결된 부분을 방문하고, 이미 방문한 부분은 다시 방문하지 않도록 합니다. 먼저 코드의 가독성을 위해서 아래의 변수 및 배열을 전역 변수로 선언해 줍니다.방바닥의 크기인 N과 M 방문 여부를 저장할 visitied 배열바닥 장식을 저장할 floor 배열 빠른 입력을 위해서 BufferedReader클래스를 사용하여 입력을 받아주고, N과 M을 공백을 기준으로 분리하여 token에 저장합니다. 입력받은 바닥의 가로 N 세로 M의 크기만큼 순회를 하면서, charAt() 메서드를 사용하여 각 line의 요소를 가져와 floor배열에 저장을 합니다. ..
자바를 활용하다 보면 중복되지 않는 유일한 값을 저장하고 관리해야 할 때가 있습니다. 이럴 때 사용할 수 있는 클래스가 HashSet입니다. HashSet은 고유한 요소들을 저장하는 데 최적화된 컬렉션 클래스입니다. 이번 글에서는 HashSet의 선언 방식, 장단점, 주요 메서드, 사용 예제 등을 자세히 알아보겠습니다. Hash란 ❓HashSet을 제대로 이해하기 위해서는 해시(Hash) 개념을 아는 것이 매우 중요합니다. 해시는 컴퓨터 과학에서 데이터 관리와 검색을 효율적으로 하기 위해 사용되는 중요한 개념입니다. 즉 임의의 길이를 갖는 데이터를 고정된 길이의 데이터로 변환(매핑)하는 과정 이때 사용되는 함수가 해시 함수(Hash Function)입니다. 해시 함수는 입력 데이터를 받아, 고정된 ..