Сейчас было ещё одно собеседование с лайвкодингом

Теорию прям хорошо рассказал, а на лайвкодинге остановили выполнение, так как я начал писать решение с большой алгоритмической сложностью.

Я не силен в алгоритмической сложности, но как я понял - её можно было решить за один перебор, а у меня был перебор в переборе. Как-то так. Кстати давно хотел разобраться с алгоритмами и освоить базу, думаю лишним не будет.

Если хотите проверить себя, ниже кину код. Попозже я всё таки додумался, и правда решается за один перебор)

Суть задачи: Нужно привести исходный массив 'input' к виду 'outputExample'. Нужно обратить внимание, что если есть несколько записей за год/месяц, то они должны группироваться, как в примере.

const input = [
  { id: '1', data: '2024.01.15' },
  { id: '2', data: '2024.02.12' },
  { id: '3', data: '2024.03.28' },
  { id: '4', data: '2024.02.22' },
  { id: '5', data: '2024.05.31' },
  
  { id: '6', data: '2020.12.21' },
  { id: '7', data: '2021.09.13' },
  { id: '8', data: '2022.01.08' },
  { id: '8', data: '2019.01.08' },
];

const outputExample = {
  2024: {
      '01': [
          { id: '1', data: '2024.01.15' },
      ],
      '02': [
          { id: '2', data: '2024.02.12' },
          { id: '4', data: '2024.02.22' },
      ],
      '03': [
          { id: '3', data: '2024.03.28' },
      ],
      '05': [],
  },
  2023: {...},
  2022: {...},
  2021: {...},
};