Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 자바
- Android
- 코틀린
- 혼공단
- SQL
- 혼공챌린지
- Kotlin
- MySQL
- 안드로이드
- CS
- java
- 기술면접
- doitandroid
- 자료구조
- 혼공파
- join
- 프로그래머스
- 티스토리챌린지
- 알고리즘
- 안드로이드스튜디오
- groupby
- select
- 코테
- Til
- 정보처리기사
- 오블완
- 정처기
- 인프런
- 카카오코테
- 스터디
Archives
- Today
- Total
Welcome! Everything is fine.
[프로그래머스/Lv.1] 바탕화면 정리 - Java 본문
728x90
📌 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr


📌 풀이
직접 그림을 그려가며 푸니 바로 이해되는 문제였다. 그러나 Math.min()과 Math.max()를 사용해 최솟값과 최댓값을 구하는 과정에서 힌트를 찾아보았다. 머리로는 알아도 막상 코드로 구현하려니 바로바로 되진 않았다.
바탕화면에 파일이 예시처럼 있다면, 드래그 하는 시작점은 (가장 위쪽, 가장 왼쪽) 인 (0, 1) 이고, 끝점은 (가장 아래쪽, 가장 오른쪽) 인 (3, 4) 이다.
0 | 1 | 2 | 3 | 4 | 5 |
1 | # | ||||
2 | # | ||||
3 | # |
정리하면, wallpaper 배열을 이중 for문으로 돌며 '#' 가 포함되는 인덱스를 통해 아래 항목을 찾아낸다.
- 가장 위쪽에 있는 i → minRow
- 가장 왼쪽에 있는 j → minCol
- 가장 아래쪽에 있는 i → maxRow
- 가장 오른쪽에 있는 j → maxCol
'#'가 포함된다면 i과 j의 값을 Math.min(), Math.max() 함수에 넣고 최솟값과 최댓값을 비교해 기존의 값과 교체한다.
📌 전체 코드
마지막에 maxRow와 maxCol에 1을 더해준 것은 wallpaper를 순회할 때 시작점이 0이기 때문이다. 1을 더해주어야 우리가 원하는 좌표가 나온다.
class Solution {
public int[] solution(String[] wallpaper) {
int minRow = Integer.MAX_VALUE;
int minCol = Integer.MAX_VALUE;
int maxRow = Integer.MIN_VALUE;
int maxCol = Integer.MIN_VALUE;
for (int i = 0; i < wallpaper.length; i++) {
for (int j = 0; j < wallpaper[i].length(); j++) {
if (wallpaper[i].charAt(j) == '#') {
minRow = Math.min(minRow, i);
minCol = Math.min(minCol, j);
maxRow = Math.max(maxRow, i);
maxCol = Math.max(maxCol, j);
}
}
}
return new int[] {minRow, minCol, maxRow + 1, maxCol + 1};
}
}
'프로그래머스 > Lv.1' 카테고리의 다른 글
[프로그래머스/Lv.1] PCCE 기출문제 10번 / 데이터 분석 - Java (0) | 2024.04.18 |
---|---|
[프로그래머스/Lv.1] 2016년 - Java (0) | 2024.04.18 |
[프로그래머스/Lv.1] 카드뭉치 - Java (0) | 2024.04.16 |
[프로그래머스/Lv.1] 개인정보 수집 유효기간(2023 KAKAO BLIND RECRUITMENT) - Java (0) | 2024.04.15 |
[프로그래머스/Lv.1] 달리기 경주 - Java (0) | 2024.04.12 |