백준 3단계 - 10, 12 번

LEE'S·2022년 10월 27일
0

백준

목록 보기
3/27

10번 (10952번)

arr = []
while(True) :
  a = input()  
  i1 , i2 = a.split(" ") 
  i1 = int(i1)
  i2 = int(i2)  
  arr.append(i1+i2)
  if (i1==0 and i2==0) :
    break 

for x in arr :
  if x==0 : break
  print(x)

처음에 이 문제가 왜 맞힌 비율이 낮은가 했었는데,,, 문제 자체가 어렵다기 보다 문제를 이해하고 원하는 출력값을 내는게 좀 헷갈린..? 그런 문제 같다..
나 같은 경우에는 일단 입력값을 받고 그 둘을 더한 다음 그 값을 배열에 저장하기 까지의 과정을 while 문에 넣은 후 만약 입력값을 '0 0' 를 받으면 while 문이 끝나도록 했다. 그리고 마지막엔 for 문을 이용하여 배열에 있는 값들을 print 하고 마지막 0이 나오면 종료하는 식으로 작성해보았다.

인터넷 찾아보면서 다른 풀이도 살펴보는데,,, 천재같은 코드 발견..

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

12번 (1110번)

cnt =  0
start = input() 
start = '0'+start if int(start)<10 else start

i = start  
while(True) :
  a,b = int(i[0]) , int(i[1])  # int  
  new = str(a+b)  # string
  new = str(b) + new[-1] 
  cnt += 1

  if new == start : 
    print(cnt)
    break
  i = new  

나 같은 경우에는 숫자를 문자로 변환해서 풀었는데 인터넷에 찾아보니까 더 효율적인 방법이 있었다

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

while True : 
	a = num // 10
    b = num % 10 
    c = (a+b)  % 10
    num = (b*10) + c 
    
    cnt += 1
    if (num == n) : break 

print(cnt)

숫자의 자리수를 표현할때는 문자열로 바꿔야만 표현할 수 있다고 생각했는데 10을 나누는 방법이 훨씬 더 좋은 것 같다.

profile
기록 블로그

0개의 댓글