legendmic2   5년 전

이진수를 십진수형태로 바꿔서 배열에 저장하고

if(현재순서%n==k)가 참일경우에 현재의 이진수값을 출력하고 cnt를 증가시키는 방식으로 짰습니다.

근데 시간초과...가 뜨네요....ㅠㅠ 어느 부분이 문제일지 궁금합니다. 


끝까지 읽어주셔서 감사합니다.

jh05013   5년 전

1 1

legendmic2   5년 전

@jh05013

아아 n=1, k=1일때를 출력하질 못했었네요!! 감사합니다!

그래서 n=1일때의 경우도 포함시켰는데 그래도 시간초과가 뜨네요ㅠㅠ 

한번 더 지적해주시면 감사하겠습니다!

jh05013   5년 전

n=1이 문제인 게 아닙니다. 45줄에 근본적으로 무슨 문제가 있는지 생각해 보세요.

legendmic2   5년 전

@jh05013

n=5이고 k=2라고 하면

order가 2, 7, 12, 17 ... 일때 bin[i]를 출력하기 위해서

if(order%n==k) 를 사용한것이었는데,

저게 맞다고 생각하고있어서그런지 문제점을 도저히 찾지를 못하겠습니다ㅠㅠㅠㅠ

jh05013   5년 전

힌트를 드리자면, 1 1을 넣을 때 왜 안 되는지 생각해 보세요.

order % 1 == 1

legendmic2   5년 전

@jh05013

감사합니다... 제 생각을 코드로 번역하는 과정이 늘 어렵네요ㅠㅠ


조언해주신대로 %를 지웠구요! 진수의 차례를 등차수열 형식으로 

n * val + k (val = 0, 1, ...) 로 나타냈더니 풀렸습니다!

명쾌한 해답 다시 한 번 감사합니다ㅠㅠ!!!

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