- 문제설명
- 제한사항
- 예시 & 입출력 예
- 해결과정
- 모든 #을 포함해서 지워야하기 때문에, (가장 위에 있는 #의 y좌표, 가장 좌측에 있는 #의 x좌표) 부터
(가장 위에 있는 #의 y좌표, 가장 좌측에 있는 #의 x좌표) 까지 드래그를 긁어서 지우면 모두 포함되어 지울 수 있다.
--> 동서남북 4방향에서의 가장 끝에 있는 #들의 좌표를 구해야겠다.
기본 세팅은 좌측상단에서 우측하단으로 갈수록 좌표값이 커진다.
1. max_north_num : for문을 통해 위에서 아래로 내려오며 #이 포함된 가장 상단의 인덱스를 구한다.
2. max_south_num : 위에서 부터 내려오면 시간낭비, 가장 하단부터 위로 올라가며 찾는다.
3. max_west_num : 1,2와 달리 array[]안의 모든 내용을 확인해야 가장 좌측 #의 좌표를 찾을 수 있다.
따라서 각 배열안의 #중 어떤 것이 더 좌측인지 비교하기위한 변수 cmp를 생성.
이후 for문을 통해 배열 안 두 개의 #좌표중 더 작은 것을 max_west_num에 넣어준다.
4. max_east_num : 3과 동일한 방식 --> indexOf() 대신 lastIndexOf() 사용 - 이후 4개의 변수를 순서에 맞게 새로운 배열로 생성 후 리턴
- 솔루션
- 배운점
- IndexOf()를 통해 특정 문자열의 인덱스를 출력할 때, 중복되는 문자열일 경우 먼저 찾아진 인덱스를 반환 후 break 된다.
- 역방향 검색을 원한다면 last를 붙여 lastIndexOf() 메소드를 사용한다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 Level 2: 마법의 엘리베이터 (0) | 2023.05.31 |
---|---|
[Java] 프로그래머스 Level 2: 문자열 압축 (0) | 2023.05.30 |
[Java] 프로그래머스 Level 1: 둘만의 암호 (0) | 2023.05.29 |
[Java] 프로그래머스 Level 1: 공원 산책 (5) | 2023.05.26 |
[Java] 프로그래머스 Level 1: 달리기 경주 (0) | 2023.05.25 |