2월 07, 2024

Java로 알고리즘 구현시 사용하면 편리한 꿀팁-Pair

 요즘 코딩테스트나 알고리즘 문제에 좌표나 배열을 사용하는 문제들이 많이 등장하고 있다. 예를 들어 그래프 문제나 n*n matrix를 사용하는 문제나 모두 행과 열의 좌표를 필요로 한다. 그런 문제에 나는 다음과 같은 방법을 사용한다.

 

class Pair를 하나 만들어준다. 그리고 행과 열의 좌표를 설정할 instance variable x와 y를 만들어준다.

 

class Pair{
 int x,y;
 Pair(int x, int y){
   this.x=x;
   this.y=y;
 }
}

위와 같이 class를 하나 생성해주면 하나의 객체 안에 행과 열의 좌표, 즉 해당 숫자의 위치를 저장할 수 있기 때문에 매우 편리하다. 

 

예를 들어 ArrayList에 정보를 저장하고 싶으면 원래같은 경우에는 x값과 y값을 두번씩 add해주어야 하는데 위와 같이 class를 만들어주면 하나의 객체로 해결할 수 있다.

 

ArrayList<Pair> arr=new ArrayList<>();
arr.add(new Pair(1,2));

이런식으로 할 수 있다는 뜻이다. 

ArrayList의 < > 안에는 Generic으로 Integer가 아닌 다른 객체 class가 와도 좋다. 즉 내가 생성한 Pair 클래스가 와도 syntax적으로 아무 이상이 없다는 뜻이다. 

 


이렇게 Pair class 만드는 방법을 나는 BFS에서도 자주 활용한다. BFS에서는 queue 자료구조를 사용하는데,

Queue<Pair> q=new LinkedList<>();

위와 같이 사용하는데 이런 경우에도 생성해준 Pair class를 사용하면 queue에 x좌표, y좌표를 함께 저장할 수 있다는 장점이 있다. 그러면 push와 pop을 두 번씩 해주지 않아도 된다는 장점이 있다. 

 

이처럼 Java의 OOP적 특성을 잘 활용해서 코딩 시에도 class를 하나 생성해 현명하고 효율적인 알고리즘을 구현 할 수 있다.