데일리문제(230405)

성준혁·2023년 4월 5일
post-thumbnail

질문#15 알고리즘에서 '시간복잡도'와 '공간복잡도'란 무엇인가? 그리고 이것들은 왜 중요한가?

시간 복잡도는

알고리즘이 입력 크기에 대해 얼마나 빠르게 실행되는지를 분석하는 것으로, 일반적으로 시간 복잡도가 낮을수록 실행 시간이 더 빠릅니다.

공간 복잡도는

알고리즘이 실행될 때 얼마나 많은 메모리를 사용하는지를 나타내는 것으로, 일반적으로 공간 복잡도가 낮을수록 메모리 사용량이 더 적습니다.

시간 복잡도와 공간 복잡도는

알고리즘의 성능을 분석하고 개선하는 데 중요한 역할을 합니다. 시간 복잡도가 높으면 실행 시간이 오래 걸리기 때문에 대용량 데이터 처리에 적합하지 않을 수 있습니다.

또한 공간 복잡도가 높은 알고리즘은

메모리를 많이 사용하므로 시스템 자원의 한계를 초과할 가능성이 있습니다. 따라서 시간 복잡도와 공간 복잡도를 고려하여 최적의 알고리즘을 선택하고 개발하는 것이 중요합니다.

질문#16 오버로딩과 오버라이딩의 차이점

오버로딩은

같은 이름의 메서드를 여러 개 정의하고 매개변수의 타입, 개수, 순서를 다르게 해서 호출될 때 매개변수에 따라 적절한 메서드를 선택하는 것입니다. 즉, 같은 이름의 메서드가 매개변수에 따라 다른 동작을 수행하게 됩니다.

반면에 오버라이딩은

상위 클래스에서 정의된 메서드를 하위 클래스에서 재정의하는 것을 말합니다. 이 때 하위 클래스에서 재정의한 메서드는 상위 클래스의 메서드와 이름, 매개변수, 반환값이 같아야 합니다. 이렇게 하면 상위 클래스에서 정의한 메서드와 같은 이름의 메서드를 하위 클래스에서 사용할 수 있으며, 하위 클래스에서 동작을 변경할 수 있습니다.

즉, 오버로딩은

같은 이름의 메서드를 매개변수에 따라 다르게 호출하는 것이고, 오버라이딩은 상위 클래스에서 정의된 메서드를 하위 클래스에서 재정의하여 동작을 변경하는 것입니다.

0개의 댓글