1157번 - 단어 공부
처음 짠 코드가 시간초과가 되어서 cout/cin과 string 대신 printf/scanf, char*로도 써보고, int len = length(s) 해서 for문 안의 함수 호출도 줄여보고,
대문자로 변환하는 포문을 밑의 포문으로 보내서 포문 하나를 줄여보는 등 여러 시도를 해도 계속 시간 초과가 뜨더라고요...
그래서 아예 다른 방법으로 해본 것이 밑의 코드인데 이건 정답 처리 되는데,,, 왜 첫번째 코드는 시간이 오래걸리는 것 일까요...?
중첩된 포문은 되도록이면 피해야되나요?? 저는 첫번째 코드를 더 잘짰다고 생각했거든요....
그리고 앞으로 알파벳의 개수 관련된 문제는 웬만하면 밑의 문제처럼 각각의 알파벳의 개수에 대응하는 배열로 푸는게 좋을까요??
코딩 독학 초보라 모르는 게 너무 많네요...
답변해주셔서 감사합니다~
시간 복잡도에 대해 공부해 보세요.
저도 초보지만 댓글 남겨봅니다.
알파벳과 관련된 문제들은 26칸 배열로 푸는것이 좋은 편입니다.
중첩 for문의 경우 시간 복잡도가 O(n^2)이라고 보시면 글자 수가 최대 1,000,000이므로 10^12가 되겠죠.
그리고 위의 코드는 글자의 카운트를 비교하시는 부분에 있어서도 같은 알파벳에 대하여 여러번 비교할 것 같네요
댓글을 작성하려면 로그인해야 합니다.
rmatlf0708 4년 전
처음 짠 코드가 시간초과가 되어서 cout/cin과 string 대신 printf/scanf, char*로도 써보고, int len = length(s) 해서 for문 안의 함수 호출도 줄여보고,
대문자로 변환하는 포문을 밑의 포문으로 보내서 포문 하나를 줄여보는 등 여러 시도를 해도 계속 시간 초과가 뜨더라고요...
그래서 아예 다른 방법으로 해본 것이 밑의 코드인데 이건 정답 처리 되는데,,, 왜 첫번째 코드는 시간이 오래걸리는 것 일까요...?
중첩된 포문은 되도록이면 피해야되나요?? 저는 첫번째 코드를 더 잘짰다고 생각했거든요....
그리고 앞으로 알파벳의 개수 관련된 문제는 웬만하면 밑의 문제처럼 각각의 알파벳의 개수에 대응하는 배열로 푸는게 좋을까요??
코딩 독학 초보라 모르는 게 너무 많네요...
답변해주셔서 감사합니다~