깃허브 링크 : 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
문자열의 길이를 재서 수가 한자리일때를 체크했다.
'Coding > Baekjoon' 카테고리의 다른 글
[백준] 단계별로 풀어보기 - 6. 함수 (python3) (4673) (0) | 2022.01.11 |
---|---|
[백준] 단계별로 풀어보기 - 5. 1차원 배열 (python3) (8958) (0) | 2022.01.11 |
[백준] 단계별로 풀어보기 - 3. for문 (python3) (15552, 11022, 2438, 2439, 10871) (0) | 2022.01.05 |
[백준] 단계별로 풀어보기 - 2. if문 (python3) (2884) (0) | 2022.01.05 |
[백준] 단계별로 풀어보기 - 1. 입출력과 사칙연산 (python3) (0) | 2022.01.04 |