문제풀이/백준(Boj) 문제풀이

백준 - 단계별로 풀기 4단계 (while문 단계 -10952번,10951번,1110번) 파이썬

얄루몬 2021. 7. 8. 13:27

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

 

10952번: A+B - 5

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

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

출력

각 테스트 케이스마다 A+B를 출력한다.

예제 입력 1 복사

1 1

2 3

3 4

9 8

5 2

0 0

예제 출력 1 복사

2 5 7 17 7

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

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

 

10951번: A+B - 4

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

각 테스트 케이스마다 A+B를 출력한다.

예제 입력 1 복사

1 1

2 3

3 4

9 8

5 2

예제 출력 1 복사

2

5

7

17

7

while True:
    try:
        a, b = map(int,input().split())
        print(a+b)
    except:
        break

👽해설👽

- 테스트 케이스가 정해지지 않았기 때문에 try ~ except문을 사용해서 종료 시점을 설정해준다. 


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

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

문제

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의 사이클의 길이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.

출력

첫째 줄에 N의 사이클 길이를 출력한다.

예제 입력 1 복사

26

예제 출력 1 복사

4

예제 입력 2 복사

55

예제 출력 2 복사

3

예제 입력 3 복사

1

예제 출력 3 복사

60

예제 입력 4 복사

0

예제 출력 4 복사

1

N = num = int(input())
count = 0

while True:
    ten = N //10 #10의자리 
    one = N % 10 #1의 자리
    sum = ten + one #입력받은 N의 10의자리 1의자리 두 수의 더하기
    count += 1 #사이클 횟수 증가
    N = int(str(N%10)+str(sum%10)) #가장 오른쪽 자리에 있는 것들을 또 더해주기(즉, 1의자ㄹ)
    if(num==N):
        break #만약 처음 입력받은 N값 즉, num(여기엔 초기N값이 저장되어 있음)과 N이 같다면 프로그램 종료
print(count)

👽해설👽

- 입력 받은 N은 리스트가 아니기 때문에 배열을 이용하여 구하질 못한다. 그렇다면 자리수를 이용해서 문제를 풀어줘야 하는데 여기서 문제를 잘 살펴본다면 10의자리(왼쪽) 1의자리(오른쪽)이란 것을 쉽게 알 수 있기 때문에 몫과 나머지를 이용하여 풀어주면 되는 문제이다.