문제
https://www.acmicpc.net/problem/1436
문제는 위 사이트를 참고해주세요.
풀이
N = int(input())
count = 2
x = 1666
if N == 1:
print(666)
else:
while count <= N:
strX = str(x)
for i in range(1, len(strX)-1):
if strX[i:i+1] == "6":
if strX[i-1:i] == strX[i:i+1] and strX[i:i+1] == strX[i+1:i+2]:
ans = x
count += 1
break
x += 1
print(ans)
N이 1인 경우에는 666을 바로 출력하게 하기 때문에
count=2, x = 1666으로 시작을 합니다.
while문은 666이 연속으로 나올 때마다 count가 올라가는데 N보다 작거나 같을 때까지 돌립니다.
while문 안을 보면 먼저 x를 문자열로 바꾸어주고 for문을 1부터 문자열의 길이-1까지 돌립니다.
예를 들어 문자열의 길이가 4면 i에는 1, 2, 3이 들어옵니다.
안에 if문은 기준이 되는 자리의 값이 6이면 그 문자의 앞뒤를 비교해 둘다 6인 경우에
ans에 x값을 넣고 count + 1을 해주고 for문을 멈춥니다.
그리고 x + 1을 하고 다시 수를 찾습니다.
위 방법이 처음풀었던 코드이고
아래 방법이 더 간단한 방법입니다.
N = int(input())
x = 666
while N:
if '666' in str(x):
N -= 1
x += 1
print(x-1)
N이 0이 될때까지 while문을 돌리고 x를 문자열로 바꾸고 문자열 666이 속해있으면
N - 1을 하고 x + 1을합니다.
마지막으로 x-1을 print해줘야 정답이 나옵니다.
'IT > 알고리즘' 카테고리의 다른 글
1일 N알고리즘 - #38 (0) | 2020.06.08 |
---|---|
1일 N알고리즘 - #37 (0) | 2020.06.06 |
1일 N알고리즘 - #35 (0) | 2020.06.02 |
1일 N알고리즘 - #34 (0) | 2020.06.01 |
1일 N알고리즘 - #33 (0) | 2020.06.01 |
댓글