본문 바로가기

Algorithm/Python

[Algorithm] 백준 22351번 : 수학은 체육과목 입니다 3

문제

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

 

22351번: 수학은 체육과목 입니다 3

이환이의 선생님이 부른 두 정수 $A$와 $B$를 공백으로 구분하여 출력하라. 만약 가능한 답이 두 가지 이상이라면, 그중 $A$가 가장 작은 것을 출력하라. 이환이는 항상 정확한 답을 쓰기 때문에,

www.acmicpc.net

 

 

풀이 (Python)

from sys import stdin

input = stdin.readline

s = stdin.readline().strip()

def solv():
  if len(s) < 4:
    flag = True
    for i in range(1,len(s)):
      if s[0] != s[i]:
        flag = False
        break
    if flag:
      print(s, s)
      return
  for start in range(1, 1000):
    tmp = str(start)
    if tmp[0] == s[0]:
      tmp = ""
      for end in range(start, 1000):
        tmp += str(end)
        if len(tmp) == len(s):
          if tmp == s:
            print(start, end)
            return

solv()

 

풀이 설명

일단, 입력받은 s가 3자리 이하의 수로 구성되어 있으면 각자리 숫자를 하나하나 비교하고 모두 같다면 print(s, s)

같지 않거나 4자리 이상의 수로 구성되어 있으면 for start in range(1, 1000): 문 시작!

start 를 저장해두고, 그 속의 for 문에서 start 부터 1000까지 end를 저장하며 돌려 tmp를 만들고 원래의 s와 비교하여 길이와 데이터가 모두 같다면 답을 출력한다!