본문 바로가기
Algorithm/Programmers

[프로그래머스] 자물쇠와 열쇠 자바

by YOONAYEON 2022. 3. 8.
문제

 

 

코딩테스트 연습 - 자물쇠와 열쇠

[[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true

programmers.co.kr

 

 

문제 풀이

 

1. 행렬 좌표값 받아 둘 Point 클래스 선언

//좌표 클래스
class Point {
	int r, c;
	
	public Point(int r, int c) {
		this.r = r;
		this.c = c;
	}
}

 

2. key의 돌기, lock의 홈 좌표를 받아둘 두 개의 ArrayList 생성

 - lockList<Point>

 - keyList<Point> 

 

3. lockList : r, c가 작은 값부터 정렬

 

4. keyList는 각도 회전이 가능하므로 총 4가지 방법으로 정렬을 함

  - r↑ c↑

  - r↑ c↓

  - r↓ c↑

  - r↓ c↓

  - r↓ c↓

 

5. lockList 담긴 순서대로 각 좌표간의 길이차이를 arr배열에 다시 저장해둠

 

6. keyList 반복하면서 마찬가지로 좌표간의 길이차를 계산하고 arr배열과 맞춰봄

 

7. 만약 다르면 arr초기화하고 continue

 

8. 이런 식으로 진행

 

소스 코드

 

나중에 해볼 것,,,,