Lowest numbers range from 1 to 26 before string codes cycle,

But indices for code array ranges from 0 to 25,

Each time we get a number n, shift it one place below (convert it to its index in code array), if n is zero (before it could be shifted below find index in code array), do nothing - stop processing

```
class Solution(object):
def convertToTitle(self, n):
"""
:type n: int
:rtype: str
"""
codes = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
res = ""
while n:
n = n - 1
res += codes[ n%26 ]
n //= 26
return res[::-1]
```