본문 바로가기
Python 문제풀이/백준(baekjoon)

3. python 반복문 - 백준 2439, 백준 1110

by 새싹_v 2022. 9. 5.
728x90


 

 

백준 2439

 

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
s = int(input())	#입력받기

for i in range(1,s+1):	
    a = (i*'*')
    print(a.rjust(s))	
#결과:
5
    *
   **
  ***
 ****
*****

- rjust함수

문자열.rjust(전체 자리 숫자, 공백이 있을 경우 공백을 채울 텍스트)

오른쪽 정렬

 

-ljust함수

왼쪽 정렬

 

 

 

 

 

 

 

 

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

규칙을 찾아서 아래처럼 만들어줌

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

while True:   #새로운 수가 나오는 반복문을 만들어줌
    #ex) num=28경우
    a = num//10 #2     (10의 자리 숫자 빼오기)몫을구함
    b = num%10  #8    (1의자리 숫자 빼오기)나머지를 구함
    c = (a+b)%10  #0  (1의자리 숫자 빼오기) 나머지를 구함
    num = (b*10)+c #80    새로운 수를 만들어줌

    count += 1    # 사이클 수 +1
    if num == n:
        print(count)  #입력받은 수가 나오면 멈춤
        break
    else:
        continue    # num != n 반복문 지속

 

Tip

연산자 의미
+ 덧셈
- 뺄셈
* 곱하기
** 제곱
/ 나누기
// 나누기 연산 후 소주점 이하의 수를 버리고, 정수 부분의 몫을 구함
% 나누기 연산 후 몫이 아닌 나머지를 구함
++ 증감 연산자
-- 감소 연산자

 

 

 

 

 

위에 글 내용은 오류 사항이 존재할 수 있습니다!

수정 사항이 있을 시 알려주시면 감사하겠습니다.

728x90

댓글