반응형
https://www.acmicpc.net/problem/14890
조건에 맞게 식을 만들어야 하는 시뮬레이션 문제.
[1,1,1,2,2,2] 처럼 왼쪽 -> 오른쪽으로 갈수록 경사가 상승할 경우는 쉽게 해결이 가능하지만,
[2,2,2,1,1,1] 처럼 경사가 하강하는 경우의 조건을 만들어내는 게 아주 번거로웠다.
코드 로직은
현재 값 start = arr[0]으로 저장하고, index 1부터 끝까지 iteration하면서 아래 조건으로 구분한다.
temp = 연속된 값이 몇 개 있는지. 즉 경사로 설치가 가능한 평면의 길이라고 생각하면 된다.
1. 현재 값 = 다음 값 -> temp 값 + 1
2. 현재 값 == 다음 값 + 1 (즉, 올라가는 경사로) -> temp 값과 주어진 L값을 비교한다. temp가 L보다 작으면 경사로를 설치할 수 없다.
3. 현재 값 == 다음 값 - 1 (내려가는 경사로) -> 다음 값부터 총 L개의 값을 확인한다.
3.1. 남은 리스트 원소 개수가 L보다 작을 경우 = 경사로 설치할 공간이 없다.
L개의 원소 전체가 동일한 값이 아니다 = 평지가 아니다. 따라서 이 두 가지 경우는 경사로 설치가 불가능하다.
3.2. 경사로를 설치할 수 있다면, 경사로를 설치한 index부터 다시 경사로 설치 여부를 검사한다.
문제 이해부터 명확히 하고, 매번 예외상황을 예상하고 처리하는 시뮬레이션 문제가 제일 어렵다...
반응형
'프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[Python] 백준 3190. 뱀 (0) | 2019.11.26 |
---|---|
[Python] 프로그래머스. 쿠키 구입 (Level 4) (0) | 2019.11.25 |
[Python] 프로그래머스. 등굣길 (Level 3) (0) | 2019.11.23 |
[Python] 백준 14499. 주사위 굴리기 (0) | 2019.11.21 |
[Python] 프로그래머스. 2020 카카오 recruit - 괄호 변환 (Level 2) (0) | 2019.11.20 |