반응형
https://school.programmers.co.kr/learn/courses/30/lessons/161990
[문제 설명]
코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다.....이하 생략
우선 알고리즘 문제를 풀면서, 내가 가장 중요하게 생각하는 건 '복잡하게 생각하지 말자'이다. 물론 복잡한 알고리즘 문제도 있지만, 되려 복잡하게 생각하여 단순한 문제를 어렵게 접근하는 경우가 많았기 때문이다.
1. 주어진 wallpaper 배열의 length는 행(row)를, wallpaper 배열의 원소의 길이는 열(col)을 나타낸다.
문제 특성상, String[] wallpaper의 원소 길이는 모두 같기 때문에 wallpaper[0]을 임의로 잡았다. 그리고 #이 존재하는 위치의 행과 열의 최소값과 최대값의 유무가 문제를 푸는데 키워드라는 것을 인지한다.
2. #이 들어가는 (최소 행, 최소 열), (최대 행 + 1, 최대 열 + 1)을 구한다.
class Solution {
public int[] solution(String[] wallpaper) {
int minCol, maxCol;
int minRow, maxRow;
int row = wallpaper.length;
int col = wallpaper[0].length(); //배열의 원소 길이는 같기에 wallpaper[0] 임의로 지정
minCol = minRow = Integer.MAX_VALUE;
maxCol = maxRow = Integer.MIN_VALUE;
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
if(wallpaper[i].charAt(j) == '#'){
minRow = Math.min(minRow, i);
maxRow = Math.max(maxRow, i);
minCol = Math.min(minCol, j);
maxCol = Math.max(maxCol, j);
}
}
}
return new int[]{minRow, minCol, maxRow + 1, maxCol + 1};
}
}
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[프로그래머스] Lv0. 이어 붙인 수 Java (0) | 2023.06.30 |
---|---|
[프로그래머스] Lv0. 문자열 겹쳐쓰기 Java (0) | 2023.06.29 |
[Java] Arrays.sort 사용하여 오름차순 정리 및 int 출력 (0) | 2023.06.27 |
[Java] 랜덤한 주사위 수 예측하기 (0) | 2023.06.20 |
백준 2562번 :: 최댓값 - JAVA (0) | 2021.10.01 |