Как сделать повторение цикла если условие не выполнено?
Хочу научится писать алгоритмы и шевелить мозгами не подсматривая
Чтобы научиться шевелить мозгами, нужно в первую очередь ими буквально шевелить(я намекаю на самостоятельность). Вы же противоречите сами себе: хочу научиться шевелить мозгами, не подсматривая в чужие алгоритмы, пойду-ка я спрошу на тостере!
Напишите функцию и вызывайте её рекурсивно, по мере надобности, это первое, что приходит в голову. Чтобы самостоятельно в голову пришло что-то иное, нужно либо тупо сидеть над одной задачей иррациональное время, либо практиковать(это то слову, к чему я вас склоняю) что угодно. По мере наращивания опыта придут и другие самостоятельные решения.
Была мысль сделать этот цикл функцией и добавить проверку по массиву после чего запускать еще раз при надобности

Так и делай. Для этого есть цикл While, будет вызывать твою функцию пока не выполнится условие