inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

8. 곳감(모래시계)

곳감 문제 시간복잡도에 관해서

282

aivyss

작성한 질문수 2

0

이 문제를 시간복잡도를 생각해서 다르게 풀었는데 그 판단이 맞는지 질문드립니다.

우선 저의 코드는 다음과 같습니다.

def solution():
    # setting
    sys.stdin = open('problem_8.txt', 'rt')

    # inputs
    n = int(input())
    area: List[List[int]] = [list(map(int, input().split())) for _ in range(n)]
    m = int(input())
    rotations: List[List[int]] = [list(map(int, input().split())) for _ in range(m)]

    # process
    for rotation in rotations:
        row_num: int = rotation[0]
        direction: int = rotation[1]
        step = rotation[2]

        row = area[row_num - 1]

        step = step if direction == 0 else -step
        left = row[step:]
        right = row[:step]
        area[row_num - 1] = left + right

    deviation: int = 0
    summation: int = 0
    for row_num in range(n):
        for column_num in range(0 + deviation, n - deviation):  # 04 13 22
            summation += area[row_num][column_num]

        if row_num < n // 2:
            deviation += 1
        else:
            deviation -= 1

    # output
    print(summation)


TimeCounterRunner(solution).run()

저는 슬라이싱 기능을 이용해서 했는데 이렇게 한 이유는 리스트의 pop에 파라미터를 안넘기면 시간복잡도가 1이지만 제가 알기로 파라미터가 있는 경우 N이 되는 것으로 알고 있습니다.

거기에 추가로 pop은 루프를 돌면서 해야하기 때문에 N^2가 된다고 생각했습니다.

거기에 회전 숫자가 1인 경우에는 insert를 써야하는데 이것도 시간복잡도가 N으로 되는 것으로 알고 있었습니다.

그러면 어림잡아서 시간복잡도가 라인도 읽어야 하니까 N^3이 되는 것 같아서 저같은 경우 위에처럼 하면

슬라이싱에서 N이고 리스트를 더하는 것이 제가 알기론 시간복잡도가 N이긴 하지만 중첩으로 가지 않아서 N^2로 끝날 수 있을 것 같았는데 맞는 판단인지 알고 싶습니다.

python 코테 준비 같이 해요!

답변 1

0

김태원

안녕하세요^^

네. pop(0)을 하면 맨 앞에 자료가 제거되고 그 뒤에 것들이 하나씩 앞으로 당겨지므로 O(n)이 맞습니다.

N제한이 20정도라서 그냥 pop(0)을 사용했습니다. 시간복잡도를 생각하면서 더 좋은 코드를 짜려고 노력하는 모습이 좋아보입니다. 잘 하셨습니다.

기존에 윈도우 10으로 잘 써왔는데 윈도우 11로 바꾸고 나서 채점이 안됩니다.

1

79

2

스택에서 ')'을 만나는 경우

0

81

3

문제가 어디있나요?

0

68

2

변수 or 함수명

0

63

1

침몰하는 타이타닉 문제 질문입니다

0

60

1

AA.py 책점 에러

0

60

1

오늘 구매했는데 파이썬 자료구조 궁금한거 있으면 답변이 잘 될까요.

0

112

2

5.동전분배하기 문제 밑에코드도 정답이될까요?

0

110

1

아나그램 비교 코드

0

118

2

AA.PY파일 복사 후 채점 진행할때 오류 발생합니다.

0

161

2

문제 링크가있나여?

0

148

2

채점기 Time Limit Exceeded 오류 문의

1

166

2

동적계획법은 사용하는 문제

0

126

2

제 코드 좀 봐주세요

0

148

1

예외가 존재할 가능성?

0

97

1

3번이 안풀립니다

0

95

0

5번 틀림

0

115

0

오류원인?

0

99

0

리스트 선언

0

108

1

침몰하는 타이타닉(그리디) 문제 질문

0

112

1

알고리즘

0

70

1

코딩테스트

0

93

1

DFS 순서 질문드립니다.

0

130

2

left, right를 사용한 풀이법에 대한 질문입니다

0

91

1