728x90

백준 단계별로 풀어보기 - While문 문제 3개 python으로 풀기


10952 - A + B - 5

※ 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

입력의 마지막에는 0 두 개가 들어온다.

while(1):
    a, b = map(int, input().split())
    if(a + b == 0):
        break
    else:
        print(a + b)

풀이 : 없음


10951 - A + B - 4

※ 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

while(1):
    try:
        print(sum(map(int, input().split())))
    except:
        break

풀이 : 위의 10952와 다른 조건은 모두 같지만, while문을 끝내는 조건이 없다. 이 때 사용해야 할 것이 try-except 이다. 해당 구문은 우선 try 내의 명령을 시행하고 그 과정에서 일어날 오류에 대비하여 except 내에 추가적인 명령을 적어넣는 구문이다. 해당 문제에서는 입력으로 정수가 아닌 다른 형태가 입력되었을 때 break로 while문을 끝내도록 만들었다.


1110 - 더하기 사이클

※ 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.

26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.

위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.

N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.

# 코드 1

num = int(input()); n = 0; exp = num
# num // 10 : 10의 자리(왼쪽) / num % 10 : 1의자리(오른쪽)
while(1):
    exp = (exp % 10) * 10 + (((exp % 10) + (exp // 10)) % 10)
    n += 1
    if (num == exp): break
print(n)

풀이 : 해당 문제의 경우에는 주어진 조건에 맞는 수식을 코드화 시키는 부분은 딱히 어려운 것이 아니었다. 정말 무식하게 보이는 것 그대로 코드로 짜면 된다. 문제를 풀면서 약간 버벅였던 곳은 While문을 끝내는 조건 또는 반복하는 조건을 어떻게 설정할 지에 대한 것이었다.

# 코드 2

num = int(input()); n = 0; exp1 = num; exp2 = 0
# num // 10 : 10의 자리(왼쪽) / num % 10 : 1의자리(오른쪽)
while(num != exp2):
    exp1 = (exp1 % 10) * 10 + (((exp1 % 10) + (exp1 // 10)) % 10)
    exp2 = exp1
    n += 1
print(n)

'#코드 2'가 처음에 짰었던 코드로 while문을 들어갈 때 실행조건으로 num != exp2를 사용하여 두 수가 같다면 while문을 실행하지 않도록 만들었었다. 해당 코드도 막힘없이 잘 돌아가지만 입력이 0인 경우가 문제가 되었다. 입력이 0인 경우 한 사이클을 돌리면 바로 0 = 0 이기 때문에 n = 1로 출력이 나와야하지만 코드의 결과는 n = 0이었기 때문이다. 입력과 동시에 입력값 = 출력값이어서 while 문이 실행조차 되지않았기에 발생했던 문제로 원하는 결과값을 얻기 위해서는 while 문 내에서 if를 사용해야할 것 같다는 생각을 하였다.

'코딩 공부 > 파이썬' 카테고리의 다른 글

백준 함수 문제풀이  (0) 2022.01.18
백준 1차원 배열 문제풀이  (0) 2022.01.17
백준 for문 문제풀이-2  (0) 2022.01.13
백준 for문 문제풀이-1  (0) 2022.01.12
백준 if문 문제풀이  (0) 2022.01.11

+ Recent posts