ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파괴되지 않은 건물
    코딩 테스트/Level 3 2022. 1. 21. 21:08
    반응형

    https://programmers.co.kr/learn/courses/30/lessons/92344

     

    코딩테스트 연습 - 파괴되지 않은 건물

    [[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5]] [[1,0,0,3,4,4],[1,2,0,2,3,2],[2,1,0,3,1,2],[1,0,1,3,3,1]] 10 [[1,2,3],[4,5,6],[7,8,9]] [[1,1,1,2,2,4],[1,0,0,1,1,2],[2,2,0,2,0,100]] 6

    programmers.co.kr

     

    무지성 코딩

    def solution(board, skills):
        for skill in skills:
            for row in range(skill[1], skill[3] + 1):
                for column in range(skill[2], skill[4] + 1):
                    if skill[0] == 1:
                        board[row][column] -= skill[5]
                    else:
                        board[row][column] += skill[5]
        answer = 0
        for row in range(len(board)):
            for column in range(len(board[0])):
                if board[row][column] > 0:
                    answer += 1
        return answer

     

    imos법

    https://driip.me/65d9b58c-bf02-44bf-8fba-54d394ed21e0

    def solution(board, skills):
        temp = [[0 for _ in range(len(board[0]) + 1)] for _ in range(len(board) + 1)]
        for _type, r1, c1, r2, c2, degree in skills:
            temp[r1][c1] += (degree if _type == 2 else -degree)
            temp[r1][c2 + 1] += (-degree if _type == 2 else degree)
            temp[r2 + 1][c1] += (-degree if _type == 2 else degree)
            temp[r2 + 1][c2 + 1] += (degree if _type == 2 else -degree)
    
        answer = 0
        for row in range(len(board)):
            for column in range(len(board[0])):
                temp[row][column + 1] += temp[row][column]
    
        for column in range(len(board[0])):
            for row in range(len(board)):
                temp[row + 1][column] += temp[row][column]
    
        for row in range(len(board)):
            for column in range(len(board[0])):
                if board[row][column] + temp[row][column] > 0:
                    answer += 1
        return answer

     

    정확성  테스트
    테스트 1 〉	통과 (0.01ms, 10.4MB)
    테스트 2 〉	통과 (0.06ms, 10.2MB)
    테스트 3 〉	통과 (0.19ms, 10.2MB)
    테스트 4 〉	통과 (0.38ms, 10.2MB)
    테스트 5 〉	통과 (0.86ms, 10.4MB)
    테스트 6 〉	통과 (0.97ms, 10.3MB)
    테스트 7 〉	통과 (1.56ms, 10.4MB)
    테스트 8 〉	통과 (1.89ms, 10.3MB)
    테스트 9 〉	통과 (2.46ms, 10.5MB)
    테스트 10 〉	통과 (3.83ms, 10.4MB)
    효율성  테스트
    테스트 1 〉	통과 (934.25ms, 136MB)
    테스트 2 〉	통과 (948.60ms, 136MB)
    테스트 3 〉	통과 (945.24ms, 136MB)
    테스트 4 〉	통과 (877.94ms, 136MB)
    테스트 5 〉	통과 (619.42ms, 102MB)
    테스트 6 〉	통과 (634.25ms, 102MB)
    테스트 7 〉	통과 (641.40ms, 102MB)
    반응형
Designed by Tistory.