Coding/Baekjoon
[백준] 단계별로 풀어보기 - 4. while문 (python3) (10951, 1110)
jir4vvit
2022. 1. 6. 22:35
깃허브 링크 : https://github.com/jiravvit/coding-test/tree/main/baekjoon/04_while_Loop |
10951번 A+B - 4 (링크)
(1) C
처음에 이 문제를 봤을 때 while 안에서 종료조건을 어떻게 해야할지 모르겠어서 먼저 C로 한번 짜봤었다.
#include <stdio.h>
int main(void)
{
int a,b = 0;
while(scanf("%d %d", &a, &b)!=EOF)
printf("%d\n", a+b);
return 0;
}
C였으면 파일 끝을 알리는 EOF에 다다르면 종료시키려고 했다.
(2) Python3
python으로는 어떻게 짜야할 지 감이 안와서 일단 종료조건 생각안하고 코딩을 했더니 아래와 같은 에러를 만났다.
그래서 try catch로 에러를 만나면 break 줘서 while문을 빠져나오는 방법을 생각했다.
(참고로 위의 저 에러는, 입력 값 두개가 와야하는데 안와서 ValueError가 뜬 것 같다.)
import sys
while True:
try:
a, b = map(int, sys.stdin.readline().split())
print(a+b)
except:
break
혹시 몰라서 다른 분의 풀이도 살펴봤는데, 대부분 다 이렇게 푸신 것 같았다.
1110번 더하기 사이클 (링크)
이 문제는 캡쳐를 생략한다.
26, 2+6=8, 68, 6+8=14, 84, 8+4=12, 42, 4+2=6, 26
26의 사이클은 4이다.
26을 입력했을 때 사이클인 4를 출력하면 된다.
input()함수를 이용해서 입력을 받으면 파이썬은 이것을 바로 str로 저장해버린다.
문자열의 특성을 이용해서 문제를 풀었다.
이때 사알짝 까다로운 점은, 입력값이 한자리이거나(!), 덧셈 결과가 한자리일 때(!) 이 두 가지를 고려해야한다는 것이다.
import sys
n = input()
cnt = 0
ori = n
if len(n)<2:
n = '0'+n # 문제에서 말해줌
while(True):
if len(str(int(n[0])+int(n[1]))) < 2:
n = n[1] + str(int(n[0])+int(n[1]))
else:
n = n[1] + str(int(n[0])+int(n[1]))[1]
cnt += 1
if int(ori) == int(n):
print(cnt)
break
문자열의 길이를 재서 수가 한자리일때를 체크했다.