• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

4번 나이차이 문제 접근법 질문 드립니다.

23.01.12 10:18 작성 조회수 186

0

4번 문제를 풀면서 나름대로 먼저 코드를 작성해서 풀고 채점해보니 결과는 제대로 나왔습니다.

다만 제공해주신 소스코드를 살펴보니 저와는 접근법이 아예 달라서 질문드립니다.

아래는 제가 작성한 코드입니다.

 

#include <iostream>

#include <algorithm>

using namespace std;

int main()

{

int inputCount, sum, temp = 0;

cin >> inputCount;

int* arr = new int[inputCount];

for (int i = 0; i < inputCount; i++)

{

cin >> temp;

arr[i] = temp;

}

sort(arr, arr + inputCount);

cout << arr[inputCount - 1] - arr[0];

return 0;

}

 

저는 input 개수를 받은 다음 그 갯수만큼 동적 배열을 할당하여 다음에 입력받는 나이들을 배열에 쌓은 다음 sorting을 하여 min, max 값을 찾아서 계산하는 방법으로 접근했습니다.

강사님께서 제공해주신 코드는 아예 입력단에서 바로바로 min/max 를 체크하여 마지막에 계산하는 방법이었습니다.

코드 처리 시간에 차이가 있을까 싶어서 따로 time 체크도 시도해보았지만 별 차이는 없었습니다.

제가 너무 복잡하게 생각하고 풀이에 접근하는건지, 제가 접근한 방법보다 더 간결하게 접근할 수 있도록 사고하는 연습을 해야할지 고민이 생겨서 질문드립니다.

답변 1

답변을 작성해보세요.

0

안녕하세요^^

영상의 방식은 시간복잡도가 O(n)입니다. 반복문이 n번 반복하면 됩니다.

위에 코드는 sort를 하기 때문에 시간복잡도가 O(n log n) 입니다. 굳이 sort를 하지 않아도 되는 코드라면 하지 않는게 좋습니다.

개발자라면 실력과 상관없이 항상 코드를 간결하게 짜고, 복잡도를 줄이려고 노력해야 겠지요.