728x90
반응형
알고리즘 - [너비우선탐색] - 2178번 미로 탐색 문제 문제링크 풀이 현재 위치의 좌표를 나타낼 Location 클래스를 만들어서 column, row, distance를 한번에 묶어서 다룰 수 있게 하였다. distance는 그 좌표까지 움직인 거리를 나타내며, 한칸씩 이동할 때마다 +1 해줘야 한다. BFS를 이용해야 하기 때문에, 현재 위치에서 상하좌우의 좌표를 살펴보면서, 미로 안에 있으면서 && 1이고 && 아직 방문하지 않은 좌표라면 그 좌표를 큐에 넣어준다. 이때 그 좌표의 거리는 이동하기 전 좌표의 dist에 +1한 값을 넣어줘야 한다. 그리고 새로운 좌표를 방문한 것으로 표시해준다. 상하좌우를 방문하는 것은 dx와 dy로 리스트를 만들어서 for문 안에서 돌아가면서 원래 좌표에 더하였..
Iterator(반복자)란 무엇인가? : Collection 요소를 순회한다. 사전적 의미: ‘반복자’라는 의미에서 어느 정도 유추할 수 있듯이 Collection에 대한 ‘반복자’이다. 컬렉션 프레임워크 내에는 다양한 컬렉션들이 있는데, 요소(=원소)를 읽어올 때 Iterator 인터페이스로 표준화하고 있다. 순서가 있는 인터페이스를 구현한 경우에는 for문과 get(i) 메서드를 사용할 수 있겠지만, 순서가 없는 인터페이스(예를 들면 Set 인터페이스)를 구현한 경우에는 get(i) 메서드를 사용할 수 없다. 이럴 때 Iterator를 사용한다. Iterator는 Collection 인터페이스를 구현한 객체에서 미리 정의되어 있는 iterator() 메서드를 호출하여 참조한다. iterator() 메..
1. 배열(ArrayList) 클래스 먼저, 자바의 배열은 크기를 미리 지정하고 사용했다. → 그러다보니 넉넉하게 크기를 지정해놓고 사용하곤 한다. 반면, ArrayList는 필요시 언제든지 추가, 삭제가 가능하다. List 인터페이스를 상속하므로 인덱스가 있고, 저장 순서가 유지되고, 데이터 중복이 가능하다. 또한, 제네릭 문법을 사용할 수 있다. → 만약, 제네릭을 사용하지 않는다면 내부적으로 Object 타입으로 처리된다. 사용을 위해서는 상단에 임포트가 필요하다. → import java.util.ArrayList; 또는 import java.util.*; 데이터 추가하기: add() → 이때, 해당 데이터 자료형으로 형변환하여 사용한다. 데이터 삽입하기: insert() → add(), inse..