연습장
51. 2의 영역 본문
Q. 정수 배열 arr가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return 하는 solution 함수를 완성해 주세요.
단, arr에 2가 없는 경우 [-1]을 return 합니다.
경우의 수가 여러개라서 생각을 잘해야 풀 수 있다.
1) 2가 없는경우 - 예시의 3번이며 -1 을 retrun 한다.
2) 2가 1개인 경우 - 예시의 2번이며 2 를 return 한다.
3) 2가 2개인 경우 - 예시의 1번이며 2부터 2까지 모두 slice 해서 return 한다.
4) 2가 3개 이상인 경우 - 예시의 4번이며 처음 2 부터 마지막 2까지 모두 slice 해서 return 한다.
각각의 케이스를 하나씩 고려하기 보다는
문제를 잘 정리하면서 공통된것을 찾아서 없애며 푸는게 중요하다.
여기서 중요한건 처음 나오는 2 와 마지막에 나오는 2를 찾는게 중요하다.
처음 나오는 2의 인덱스를 Start 라 하고
마지막 나오는 2의 인덱스를 End 라 하면
Start 부터 End 까지 slice 하면 3, 4 번을 동시에 해결 할 수있다.
2가 몇개가 더나오든 4번의 Start 와 End 에는 영향을 주지 않음 .
그리고 Start 와 End 가 같은경우 -> 즉 두 인덱스가 같은경우 -> 2가 1개인 경우이다. -> 2번 을 해결할수있다.
마지막으로 Start 와 End 가 없는경우 -> 즉 2가 없는 경우 (undefined) 로 -> 1번을 해결 할 수있다.
각각 Start 와 End 값을 찾는 함수를 정의하고
본 문제에 적용하였다.
'프로그래머스 > 0단계' 카테고리의 다른 글
53. 왼쪽 오른쪽 (0) | 2023.07.10 |
---|---|
52. 배열 조각하기 (0) | 2023.07.10 |
50. 리스트 자르기 (0) | 2023.07.10 |
49. 문자개수 세기 (0) | 2023.07.10 |
48. 세로 읽기 (0) | 2023.07.10 |