728x90
코드 힌트
- 초기화:
- result 배열은 최종적으로 반환될 값으로, 좌상단과 우하단 좌표를 담고 있습니다.
- 배열의 처음 두 값(최소 Y, 최소 X)은 각각 Integer.MAX_VALUE로 초기화하여, 최소값을 찾는 데 방해되지 않도록 합니다.
- 나머지 두 값(최대 Y, 최대 X)은 Integer.MIN_VALUE로 초기화하여, 최대값을 찾는 데 방해되지 않도록 합니다.
- 2차원 탐색:
- wallpaper 배열은 각 문자열을 행으로 구성된 2차원 공간을 나타냅니다. 각 문자(열)를 행별로 탐색합니다.
- # 문자를 찾을 때마다, 해당 좌표를 기준으로 result 배열의 값을 갱신합니다.
- 좌표 갱신:
- #을 찾은 경우, result[0](최소 Y)와 result[1](최소 X)는 최소값을 갱신하여 좌상단의 좌표를 설정합니다.
- result[2](최대 Y)와 result[3](최대 X)는 최대값을 갱신하여 우하단의 좌표를 설정합니다. 좌표값은 i+1 또는 j+1로 갱신하는데, 이는 인덱스가 0부터 시작하기 때문에 크기를 고려해 1을 더해주는 것입니다.
정답은 더보기 클릭
더보기
class Solution {
public int[] solution(String[] wallpaper) {
// 0 : minY, 1 : minX, 2 : maxY, 3 : maxX
int[] result = new int[4];
// 최소값은 최대값으로, 최대값은 최소값으로 초기화하여 비교 시 문제없게 설정
for (int i = 0; i < 4; i++) {
if (i < 2)
result[i] = Integer.MAX_VALUE; // 최소값을 찾기 위해 최댓값으로 초기화
else
result[i] = Integer.MIN_VALUE; // 최대값을 찾기 위해 최솟값으로 초기화
}
// 2차원 공간 탐색
for (int i = 0; i < wallpaper.length; i++) {
String line = wallpaper[i];
for (int j = 0; j < line.length(); j++) {
if (line.charAt(j) == '#') {
// 좌상단 좌표 갱신
result[0] = Math.min(result[0], i); // 최소 Y
result[1] = Math.min(result[1], j); // 최소 X
// 우하단 좌표 갱신
result[2] = Math.max(result[2], i + 1); // 최대 Y
result[3] = Math.max(result[3], j + 1); // 최대 X
}
}
}
// 결과 반환
return result;
}
}
728x90
'프로그래머스(Java) > Level 1' 카테고리의 다른 글
[프로그래머스] [PCCP 기출문제] 1번 / 동영상 재생기 (3) | 2024.09.07 |
---|---|
[프로그래머스] 성격 유형 검사하기 (0) | 2024.08.29 |
[프로그래머스] 개인정보 수집 유효기간 (0) | 2024.08.27 |
[프로그래머스] 공원 산책 (0) | 2024.08.27 |
[프로그래머스] [PCCE 기출문제] 10번 / 데이터 분석 (0) | 2024.08.26 |