[백준] 14890번 경사로

2025. 6. 16. 20:14·코딩테스트/백준

 

문제

 

 

이 문제는 사실 문제를 이해하는게 가장 어려웠던 문제였던거 같다 조건이 많고 문제가 한번에 이해되지 않아서 애를 먹었다..

 

경사로는 크게 두가지 종류가 있다

 

 

 

내려가는 경사로가 될 조건

(1) 현재 좌표가 이전 좌표보다 1 낮다.
(2) 현재좌표부터 L개의 좌표의 높이가 같다.
(3) 현재 좌표부터 L개의 좌표에 올라가는 경사로가 설치되어 있지 않아야한다

 

올라가는 경사로가 될 조건

 

(1) 현재 좌표가 이전 좌표보다 1 낮다.
(2) 이번좌표부터 L개의 좌표의 높이가 같다.
(3) 이번 좌표부터 L개의 좌표에 올라가는 경사로가 설치되어 있지 않아야한다

 

 

이를 바탕으로 구현을 하게 되면 아래와 같은 코드가 나온다

 

정답코드

 

#높이차가 1이고 그러한 칸의 길이가 L의 배수일때 1 높일 수 있음
# n<=100

n,l = map(int,input().split())
graph = [list(map(int,input().split())) for _ in range(n)]

def check(line):
    bridge = [False for _ in range(n)]

    for i in range(1,n):
        if abs(line[i-1] - line[i])>1:
            return False
        else:
            #오른쪽
            if (line[i-1]-line[i]) == 1:
                for j in range(l):
                    #그래프 밖으로 나가는 경우
                    if i+j>= n:
                        return False
                    if line[i]!=line[i+j]:
                        return False
                    if bridge[i+j] == True:
                        return False
                    if bridge[i+j] == False:
                        bridge[i+j] = True
            #왼쪽
            elif (line[i-1]-line[i])== -1:
                for j in range(l):
                    if i-1-j <0 :
                        return False
                    if line[i-1] != line[i-j-1]:
                        return False
                    if bridge[i-1-j] == True:
                        return False
                    if bridge[i-1-j] == False:
                        bridge[i-1-j] = True
    return True


ans = 0
#가로
for i in range(n):
    if check(graph[i]):
        ans += 1
#세로
for j in range(n):
    if check([graph[i][j] for i in range(n)]):
        ans += 1
print(ans)

 

 

구현문제인 만큼 문제를 이해하고 조건을 정리하는게 가장 어려웠던 문제였다.

'코딩테스트 > 백준' 카테고리의 다른 글

[백준]10986번 나머지 합 python  (0) 2025.07.03
[백준] 1238 파티 -python 파이썬  (0) 2025.05.21
[백준]2252번 줄세우기 - python (위상정렬)  (0) 2025.05.19
[백준]11657 타임머신 - Python 파이썬  (0) 2025.04.18
[백준] 1253번 좋다 - python 파이썬  (0) 2025.04.17
'코딩테스트/백준' 카테고리의 다른 글
  • [백준]10986번 나머지 합 python
  • [백준] 1238 파티 -python 파이썬
  • [백준]2252번 줄세우기 - python (위상정렬)
  • [백준]11657 타임머신 - Python 파이썬
hiwon
hiwon
천천히 굴러가는 코딩일기
  • hiwon
    하이원의 코딩 일기
    hiwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • 프론트엔드 (0)
        • react (0)
      • 백엔드 (13)
        • node.js (1)
        • spring (6)
      • 코딩테스트 (57)
        • 백준 (41)
        • 프로그래머스 (15)
      • 프로디지털아카데미 (9)
        • 클라우드 (1)
        • JavaScript (1)
      • github (1)
      • AWS (2)
      • Infra (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    프로그래머스
    파이썬
    알고리즘
    투포인터
    그리디
    알파코캠퍼스
    MSA
    프디아
    백트래킹
    깃허브
    spring
    bastion host
    K디지털트레이닝
    다익스트라
    신한투자증권
    github
    BFS
    프로디지털아카데미
    AWS
    UnionFind
    EC2
    코딩테스트
    IT기획
    Java
    python
    백엔드
    kdt교육
    알파코
    코테
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hiwon
[백준] 14890번 경사로
상단으로

티스토리툴바