티스토리 뷰
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/81302
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2021 카카오 채용연계형 인턴십
Level 2 문제다.
dfs나 bfs로 접근할 수 있지만
나는 배열을 끝까지 탐색하며 응시자인 경우 거리두기를 지켰는지 확인했다.
거리두기를 위반한 경우는
1. 바로 옆이 응시자인 경우
2. 대각선이 응시자고 대각선 사이에 테이블이 있는 경우
3. 맨해튼 거리 2에 응시자가 있고 그 사이에 테이블이 있는 경우
이렇게 세가지기 때문에 세가지 경우에 해당하는 배열을 만들어 확인했다.
class Solution {
public int[] solution(String[][] places) {
int[][] beside = {{0, -1}, {-1, 0}, {0, 1}, {1, 0}};
int[][] diagonal = {{-1, -1}, {-1, 1}, {1, 1}, {1, -1}};
int[][] far = {{0, -2}, {-2, 0}, {0, 2}, {2, 0}};
int []result = {1, 1, 1, 1, 1};
Loop: for(int i=0;i<5;i++) {
char[][] arr = new char[5][5];
for(int j=0;j<5;j++)
for(int k=0;k<5;k++)
arr[j][k] = places[i][j].charAt(k);
for(int j=0;j<5;j++)
for(int k=0;k<5;k++) {
if(arr[j][k] == 'P') {
int newX, newY;
// 바로 옆
for(int l=0;l<4;l++) {
newX = j + beside[l][0];
newY = k + beside[l][1];
if(newX >= 0 && newX < 5 && newY >= 0 && newY < 5
&& arr[newX][newY] == 'P') {
result[i] = 0;
continue Loop;
}
}
// 대각선
for(int l=0;l<4;l++) {
newX = j + diagonal[l][0];
newY = k + diagonal[l][1];
if(newX >= 0 && newX < 5 && newY >= 0 && newY < 5
&& arr[newX][newY] == 'P' &&
(arr[j + beside[l][0]][k + beside[l][1]] == 'O' ||
arr[j + beside[(l + 1) % 4][0]][k + beside[(l + 1) % 4][1]] == 'O')) {
result[i] = 0;
continue Loop;
}
}
// 맨해튼 거리 2
for(int l=0;l<4;l++) {
newX = j + far[l][0];
newY = k + far[l][1];
if(newX >= 0 && newX < 5 && newY >= 0 && newY < 5
&& arr[newX][newY] == 'P'
&& arr[j + beside[l][0]][k + beside[l][1]] == 'O') {
result[i] = 0;
continue Loop;
}
}
}
}
}
return result;
}
}
728x90
'algorithm > programmers' 카테고리의 다른 글
[프로그래머스/자바] 두 큐 합 같게 만들기 풀이 - 2022 KAKAO TECH INTERNSHIP (0) | 2022.11.13 |
---|---|
[프로그래머스/자바] 성격 유형 검사하기 풀이 - 2022 KAKAO TECH INTERNSHIP (0) | 2022.11.13 |
[프로그래머스/자바] 숫자 문자열과 영단어 풀이 - 2021 카카오 채용연계형 인턴십 (0) | 2022.11.13 |
[프로그래머스/자바] 경주로 건설 풀이 - 2020 카카오 인턴십 (0) | 2022.11.13 |
[프로그래머스/자바] 보석 쇼핑 풀이 - 2020 카카오 인턴십 (0) | 2022.11.13 |