Notice
Recent Posts
Recent Comments
Link
DevKim
[Python] 삼성 sw 역량 테스트 기출 - 경사로 본문
728x90
[ 알고리즘 ]
구현
[문제 접근]
이 문제는 세가지의 경우로 나눠야한다
1. 경사가 감소하는 경우 (한칸만)
--> 그 전의 경사 높이-1 = 그 다음의 경사 높이 일땐 감소하는 경사의 개수가 L 이상이 되어야함
2. 경사가 증가하는 경우 (한칸만)
--> 그 전의 경사 높이+1 = 그 다음 경사 높이 일땐 증가하기 전에 까지의 높이가 연속적으로 L개 이상이 되어야함
3. 경사가 같은 경우
--> 단순 check 증가
[코드]
N,L=map(int,input().split())
answer=0
board=[]
for i in range(N):
board.append(list(map(int,input().split())))
def checking(board):
answer=0
for i in range(N):
List = board[i]
# 모두 같을때
if len(set(List)) == 1:
answer += 1
continue
# 모두 같지 않음
else:
ptr=List[0]
check=1
for j in range(1,N):
if List[j]==ptr: # 같은게 이어졌을 때
check+=1
ptr=List[j]
elif List[j]==ptr+1 and check>=0: # 증가하는 애
if check>=L:
check=1
ptr=List[j]
else:
check=-1
break
elif List[j]==ptr-1 and check>=0: # 감소하는 애
check=-L+1
ptr=List[j]
else:
check=-1
break
if check>=0:
answer+=1
return answer
# 가로, 세로 결과 더하기
print(checking(board)+checking(list(zip(*board))))
728x90
'알고리즘 PS' 카테고리의 다른 글
[Python] 삼성 sw 역량 테스트 기출 - 로봇 청소기 (0) | 2021.03.18 |
---|---|
[Python] 삼성 sw 역량 테스트 기출 - 연구소 (0) | 2021.03.18 |
[Python] 프로그래머스 LV.03 - 거스름돈 (0) | 2021.03.13 |
[Python] 프로그래머스 LV.03 - 단어 변환 (0) | 2021.03.13 |
[Python] 프로그래머스 LV.03 - 네트워크 (0) | 2021.03.13 |
Comments