1부터 n까지의 숫자를 2중 for 문으로 실행하면 숫자가 증가하는 동시에 자동으로 하위 for 문에서 수행할 반복문의 횟수가 고정되므로 충돌을 걱정할 필요가 없어졌습니다. 두 가지 개념을 하나로 합쳐서 사용했기 때문에 일처리가 훨씬 간단해졌고, 이해하기 쉬워졌습니다(통상적으로 파이썬에서는 while 문보다 for 문의 실행 속도가 더 빠릅니다).
이렇게 반복문을 어떻게 사용하는지에 따라 과정 하나를 줄일 수도 있습니다. 보통 방향 전환 문제를 풀 때 while 문을 사용하는 이유 중 하나가 방향 전환의 기준을 다음 진행 방향이 막혔는지에 따라 판단하는 수동적 대응 때문입니다. 일단 쭉 진행하다가 문제가 발생하면 그제서야 대처하는 방식으로 코드를 짜면 생각 이상으로 코드가 길어집니다. 가능하다면 변수의 진행 방향을 반복문 단위에서 직접 조정해주는 방식으로 대응하세요.
보통 처음에는 개념을 따로따로 나눠서 구현하는 경우가 많습니다. 그 편이 생각하기도 좋고 코드가 꼬일 걱정을 하지 않아도 되니까요. 그러나 기능을 분리하고 변수를 많이 만들수록 고려할 사항이 늘어나며, 이를 확인하기 위한 중복 논리를 계속 작성하게 됩니다. 필요한 경우가 아니라면 생각을 줄일 수 있도록 가급적 사용하는 변수를 줄이고 여러 논리를 한 번에 만족하는 코드를 짭시다.