rlaeogus890   5년 전

n과m 10번까지는 python 으로 꿀빨며 오다가

여기서 시간초과로 막혀버리네요..

통과한 사람들은 어떻게 통과한건지...

고수님들 아이디어좀 부탁드립니다!

hello70825   5년 전

13~16번째 줄이 시간 초과의 원인입니다

이 부분만 고치면 잘돌아갑니다.

rlaeogus890   5년 전

ㅠㅠ 도대체 어떻게 수정하신거죠?

a = str(temp)[1:-1].replace(",","")

print(a)

print(*a)로 줄였고

중복 체크는 set()으로 변환했다가 정렬하여 리스트로 출력해봤는데도 시간초과가 나오네요..

제 사고의 확장이 필요합니다. 조금만 더 떡밥을 뿌려주세요  ㅠ_ㅠ

hello70825   5년 전

굳이 cal_perm 함수 내에서 처리 하지 않아도 됩니다.

n과 m이 7일 때 메모리 초과가 나올 줄 알았는데, 생각보다 메모리를 많이 잡아먹지는 않네요.

rlaeogus890   5년 전

저는 도저히 아이디어가 안떠오르네요.

내일 걍 재귀말고 다르게 풀어봐야겠어요

hello70825   5년 전

배열 저장해둘 곳 하나 만든 다음

deepness가 m일 때 전부 저장해두세요(저는 저장 해둘 곳 이름을 memo로 해두었습니다.)

그다음 23번째 줄에서 memo=sorted(list(set(memo)))로 정렬과 중복 제거를 한 다음 출력하시면 됩니다.

' '.join(map(str,memo[i]))를 이용하면 콤마빼고 출력할 수 있어요

rlaeogus890   5년 전

호고곡.. 죄송합니다. 늦게 봤네요!

엥 근데 그 방법은 제가 시도해봤었는데

memo 리스트에 자료를 리스트형으로 저장하면

set(memo)할때 TypeError: unhashable type: 'list' 가 뜨지 않나요? 

그래서 저는 str형으로 저장해서 실행했었는데 위와 비슷한 로직으로 시간초과가 났었거든요.

아래 코드의 17번째 줄입니다.

이렇게 간단한 코드로 해도 에러가 뜨는데 어떻게 하신건가용??

a = []

b = [1,2,3]

a.append(b)

c = set(a) => TypeError

hello70825   5년 전

9번째 줄에 tuple로 바꿔서 저장해야 중복 제거를 할 수 있습니다.

지금 생각해보니 set에 정렬 기능이 있기 때문에 sorted를 사용 안해도 됩니다.

rlaeogus890   5년 전

감사합니다!

좋은 경험이었어요.

list에 추가해가며 있는지 없는지 비교해서 중복제거하는 법보다,

set으로 중복제거 하는것이 좀더 빠르고,

set 자료형에는 list형을 추가할수는 없으나 tuple은 가능하고,


어떤 iterable한 자료형에서 자료만 출력할때는 str형으로 바꿔서 응용해도되고

* 을 써서 출력하는 법도 있다는 것을 알았네요!


친절히 도와주셔서 감사합니다!

댓글을 작성하려면 로그인해야 합니다.