13~16번째 줄이 시간 초과의 원인입니다
이 부분만 고치면 잘돌아갑니다.
15665번 - N과 M (11)
13~16번째 줄이 시간 초과의 원인입니다
이 부분만 고치면 잘돌아갑니다.
ㅠㅠ 도대체 어떻게 수정하신거죠?
a = str(temp)[1:-1].replace(",","")
print(a)
는
print(*a)로 줄였고
중복 체크는 set()으로 변환했다가 정렬하여 리스트로 출력해봤는데도 시간초과가 나오네요..
제 사고의 확장이 필요합니다. 조금만 더 떡밥을 뿌려주세요 ㅠ_ㅠ
굳이 cal_perm 함수 내에서 처리 하지 않아도 됩니다.
n과 m이 7일 때 메모리 초과가 나올 줄 알았는데, 생각보다 메모리를 많이 잡아먹지는 않네요.
저는 도저히 아이디어가 안떠오르네요.
내일 걍 재귀말고 다르게 풀어봐야겠어요
배열 저장해둘 곳 하나 만든 다음
deepness가 m일 때 전부 저장해두세요(저는 저장 해둘 곳 이름을 memo로 해두었습니다.)
그다음 23번째 줄에서 memo=sorted(list(set(memo)))로 정렬과 중복 제거를 한 다음 출력하시면 됩니다.
' '.join(map(str,memo[i]))를 이용하면 콤마빼고 출력할 수 있어요
호고곡.. 죄송합니다. 늦게 봤네요!
엥 근데 그 방법은 제가 시도해봤었는데
memo 리스트에 자료를 리스트형으로 저장하면
set(memo)할때 TypeError: unhashable type: 'list' 가 뜨지 않나요?
그래서 저는 str형으로 저장해서 실행했었는데 위와 비슷한 로직으로 시간초과가 났었거든요.
아래 코드의 17번째 줄입니다.
이렇게 간단한 코드로 해도 에러가 뜨는데 어떻게 하신건가용??
a = []
b = [1,2,3]
a.append(b)
c = set(a) => TypeError
9번째 줄에 tuple로 바꿔서 저장해야 중복 제거를 할 수 있습니다.
지금 생각해보니 set에 정렬 기능이 있기 때문에 sorted를 사용 안해도 됩니다.
감사합니다!
좋은 경험이었어요.
list에 추가해가며 있는지 없는지 비교해서 중복제거하는 법보다,
set으로 중복제거 하는것이 좀더 빠르고,
set 자료형에는 list형을 추가할수는 없으나 tuple은 가능하고,
어떤 iterable한 자료형에서 자료만 출력할때는 str형으로 바꿔서 응용해도되고
* 을 써서 출력하는 법도 있다는 것을 알았네요!
친절히 도와주셔서 감사합니다!
댓글을 작성하려면 로그인해야 합니다.
rlaeogus890 5년 전
n과m 10번까지는 python 으로 꿀빨며 오다가
여기서 시간초과로 막혀버리네요..
통과한 사람들은 어떻게 통과한건지...
고수님들 아이디어좀 부탁드립니다!