코딩 테스트/프로그래머스

Lv3. 등굣길

  • -
728x90

문제 보기 :  등굣길

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제

  • 정답률 : 58%


작성 코드

def solution(m, n, puddles):
    answer = 0
    maps = []
    for i in range(n):
        maps.append([1]*m)
        
    for pu in puddles:
        maps[pu[1]-1][pu[0]-1] = 0 #앗쒸.. 3번째 열 2번째 행이었냐..
    
    # 0행/0열에 물웅덩이 있으면 그 뒤로는 못감
    for i in range(m):
        if maps[0][i] == 0:
            for j in range(i+1, m):
                maps[0][j] = 0
            break
    for i in range(n):
        if maps[i][0] == 0:
            for j in range(i+1, n):
                maps[j][0] = 0
            break
    
    for i in range(1,n):
        for j in range(1,m):
            if maps[i][j]!=0:
                maps[i][j] = (maps[i-1][j] + maps[i][j-1])
                
    answer = maps[-1][-1]
    return answer%1000000007

풀이

print(solution(2, 2, []), 2)
print(solution(3, 3, []), 6)
print(solution(3, 3, [[2, 2]]), 2)
print(solution(3, 3, [[2, 3]]), 3)
print(solution(3, 3, [[1, 3]]), 5)
print(solution(3, 3, [[1,3],[2, 2]]), 2)
print(solution(3, 3, [[1, 3], [3, 1]]), 4)
print(solution(3, 3, [[1, 3], [3, 1], [2, 3]]), 2)
print(solution(3, 3, [[1, 3], [3, 1], [2, 3], [2, 1]]), 1)
print(solution(4, 4, [[3, 2], [2, 4]]), 7)
print(solution(7, 4, [[2, 1], [2, 2], [2, 3], [4, 2], [4, 3], [4, 4], [6, 2], [6, 3]]), 0)
print(solution(100, 100, []), 690285631)

추가로 확인해보면 좋은 예제들이다.

좌표 x, y가 거꾸로 되어있어서 진짜 거지 같았다. 아니 puddles 저거 좌표 왜 거꾸로 해둔건데에...

암튼.. 이 문제는 고등학생 때 배웠던 짧은 거리로 가는 방법의 갯수 구하는 문제? 라고 해야하나.. 
개인적으로 되게 좋아했던 문제였는데 여기서 보니 새로웠다. 

초기 설정만 잘 하면 바로 풀 수 있는 문제로, 0행과 0열만 확인해보면 된다.

320x100

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

Lv3. 숫자 게임  (0) 2024.09.26
Lv1. 로또의 최고 순위와 최저 순위  (0) 2024.09.26
Lv2. [3차] 파일명 정렬  (0) 2024.09.24
Lv2. 오픈채팅방  (0) 2024.09.24
Lv2. 2 x n 타일링  (0) 2024.09.22
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.