https://programmers.co.kr/learn/courses/30/lessons/12923
아는 문법으로만 풀어보고있는데 답은 맞는데 시간초과가 뜹니다.
이게 왜 시간 효율성이 최악인건지 알려주실 수 있나요?
그리고 시간 효율성 좋게 코딩하려면 어디부터 공부해야될까요?
컴공 신입생입니다.
https://programmers.co.kr/learn/courses/30/lessons/12923
아는 문법으로만 풀어보고있는데 답은 맞는데 시간초과가 뜹니다.
이게 왜 시간 효율성이 최악인건지 알려주실 수 있나요?
그리고 시간 효율성 좋게 코딩하려면 어디부터 공부해야될까요?
컴공 신입생입니다.
해당 댓글은 삭제되었습니다.
2학년때 배우던데 혼자 코딩공부할정도 수준만 필요하면 그냥 유튜브에 있는 강의 정도만 봐도 될까요?
학교사이트에 교수님 강의도 있던데 그거 들어봐도 좋겠네요 감사합니다!
제가 파이썬을 잘 몰라서 답해드리기 어렵지만, 시간초과 현상은 2가지입니다. 1. 예외 케이스가 있다. 예를 들어 n=map(sys.input.txt,rt,stdin) while(1):{if(cnt==1): break; } 하면 cnt입력이 1이 아니라 다른 값이면 계속 무한 반복되서 시간 초과가 떠요(이건 프로그래머스에서도 적용되는 지 잘 모르겠습니다) 2. 반복문이 너무 많아요. 입력값이 1000정도있다면 반복문을 2번 써도 괜찮은데, 예를 들어 입력값이 10000인데 반복문이 2개거나, 반복문을 3번 쓰는데, 입력값이 1000이라면 너무 많은 반복 때문에 시간이 오래걸려요
그럼 반복문을 줄여봐야겠네요 감사합니다
저 코드에선 p의 값을 begin//i로 해주면 더 좋을듯
음 지금은 이해가 안되는데 고민해보겠습니다 감사합니다
def solution(begin, end): answer = [0 for _ in range(end-begin+1)] for i in range(1, end + 2 >> 1): if begin // i > 1: j = (begin // i) * i if j < begin: j += i else: j = i << 1 for j in range(j, end + 1, i): answer[j-begin] = i return answer이런말
해당 댓글은 삭제되었습니다.
아 그 begin이랑 end 사이만 넣으라해서 그렇게했음
그냥 저대로 하면 1부터 end까지 다넣는거 같아서
곱하기 말고 덧셈연산으로 시간 줄여도 될듯