Post

14. Python(브루트 포스 실습)

14. Python(브루트 포스 실습)

[toc]

부루트 포스 실습(영화감독 슘)

문제

  1. https://www.acmicpc.net/problem/1436

제출

코드

1
2
3
4
5
6
7
8
9
n = int(input())

cnt = 1
num = 666
while (cnt <= n):
    if '666' in str(num):
        cnt += 1
    num += 1
print(num - 1)
1
2
# 입력
2
1
2
# 출력
1666
1
2
# 입력
5
1
2
# 출력
4666
1
2
# 입력
187
1
2
# 출력
66666
1
2
# 입력
500
1
2
# 출력
166699

인사이트

  1. 자연수 n( N <= 10,000)을 입력한 뒤 '666'을 포함하는 수 중 n번째로 작은 수를 구하라
  2. 반복문 사용

조건

  1. 시간 제한 : 2초
  2. 메모리 제한 : 128 MB

풀이

1. 입력

  • n을 int로 받음

2. 반복문

  • n의 값에 따라 반복해야할 횟수가 달라지는 것을 보아 for 대신 while을 사용함

3. 판별

1) 반복문 설명
1
2
3
4
5
6
7
8
9
n = int(input())

cnt = 1
num = 666
while (cnt <= n):
    if '666' in str(num):
        cnt += 1
    num += 1
print(num - 1)
  • 영화 시리즈는 1편부터 시작하니 cnt = 1로 설정

  • cnt의 값이 입력값 n과 같거나 작은 순간까지 num을 1씩 증가
    • 단, num이 '666'을 포함하는 수일 때 cnt의 값을 증가
  • cnt <= n일 때 num의 값이 1증가한 상태로 while문이 끝나기 때문에 출력할 때 print(num - 1)로 정답을 출력