[백준 | 실버3] 4375 : 1(완전탐색)

파송송계란빡 ㅣ 2022. 8. 8. 13:46

https://www.acmicpc.net/problem/4375

 

4375번: 1

2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.

www.acmicpc.net

 

문제

2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다.

출력

1로 이루어진 n의 배수 중 가장 작은 수의 자리수를 출력한다.

예제 입력 1 복사

3
7
9901

예제 출력 1 복사

3
6
12

 

방법 1

-> 문자열로 만들어서 1씩 붙이기

import sys
sys.stdin = open("1_3_20220808_백준_4375_1.txt", "r")

def one(num) :
    temp = '1'

    while True :
        if int(temp) % num == 0 :
            return len(temp)
        temp += '1'                   #1 추가

while True :
    try :
        num = int(input())
        print(one(num))
    except EOFError:
        break

#2와 5로 나누어 떨어지지 않는 수
#1~10000
#1로만 이루어진 n의 배수
#11, 111, 1111

 

방법 2

-> temp = temp * 10 + 1

import sys
sys.stdin = open("1_3_20220808_백준_4375_1.txt", "r")

def one(num) :
    temp = 1
    while True :
        temp = temp * 10 + 1        #기존에 만들었던거에서 1 더한수
        
        if temp % num == 0 :        #나누어 떨어지면 n의 배수
            return len(str(temp))
        

while True :
    try :
        num = int(input())
        print(one(num))
    except EOFError:
        break

#2와 5로 나누어 떨어지지 않는 수
#1~10000
#1로만 이루어진 n의 배수

#11 -> 10 + 1 
#111 -> 100 + 11
#1111 -> 1000 + 111
#11111 -> 10000 + 1111 -> 10 * 4 + 11111
[백준 | 실버3] 4375 : 1(완전탐색)