일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- +연산자 의미
- JavaScript
- 3장
- perpect C
- getchar()
- c
- 합
- perpectC
- 평균
- 원 면적
- 정답
- 오류
- PERPECT
- 풀이
- 실습예제
- 3강
- 티스토리 커버이미지 변경
- 원 둘레
- 쉼표필요
- 점프 투 파이썬 #패키지 # 비전공자
- () (+) 차이
- 백엔드 개발자 #로드맵
- eslint
- eslint 쉼표필요 오류
- ㅔㄴ트 안잉
- 연습문제
- putchar()
- 비트마스크
- 3판
- Chapter3
- Today
- Total
옥수수와 식빵 그리고 코딩
백준 문제 풀이 while문 본문
10952번
sys.stdin.readline() 사용
import sys
while True:
a,b = map(int,sys.stdin.readline().split(' '))
result = a + b
if result == 0:
break
print(result)
input()을 써서 풀어도 됨
while True:
a,b = map(int, input().split(' '))
result = a + b
if result == 0:
break
print(result)
10951번
어떻게 빠져나가지?
안 빠져 나가도 되는건가?
while True:
a,b = map(int, input().split(' '))
result = a + b
print(result)
안된다. 런타임 오류가 뜬다.
while 조건문을 False로 만드려 하니 입력값에서 False로 만들 만한게 없다.
점투파를 다시 봐도 모르겠어서 컨닝 한다.
!! try문을 사용하면 됨!!
try:
while True:
a,b = map(int, input().split(' '))
result = a + b
print(result)
except:
break
SyntaxError: 'break' outside loop 발생
break는 for나 while 아래에서밖에 못 쓴다고 외우시면 될 것입니다. 그래서 "break outside loop"가 오류인 겁니다.
https://hashcode.co.kr/questions/10326/python-break-outside-loop-%EC%98%A4%EB%A5%98%EC%A7%88%EB%AC%B8%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4
try:
while True:
a,b = map(int, input().split(' '))
result = a + b
print(result)
except:
print('error')
이렇게 하면 try안에서 오류가 발생 했을 때 while문을 빠져 나오고 error 메시지를 출력하며 끝낸다.
하지만 문제에서는 error메시지가 출력되면 안되기 때문에 while문 안에 try, excpt를 집어넣어 break를 넣도록 한다.
while True:
try:
a,b = map(int, input().split(' '))
result = a + b
print(result)
except:
break
1110번 !!!!!!!!!!!!!!!!!!!!!
오....신박한 문제다...
x = input()
if x < 10:
x = int('0'+'x')
while result != int(x):
result = int(x[0]) + int(x[1])
여기까지는 코드를 짰는데 사이클의 길이는 어떻게 구하는지 모르겠다.
count 변수에 while문이 한번씩 돌 때 마다 1을 더한다.
x = input()
origin = x
if int(x) < 10:
x = int('0'+'x')
count = 0
while result != origin:
result = int(x[0]) + int(x[1])
x = result
count += 1
그리고 대체게 오류난다.
while문 안의 result가 정의되지 않아 오류가 발생했다.
x = input()
origin = x
if int(x) < 10:
x = int('0'+'x')
count = 0
while True:
nx = x
if int(nx) < 10:
nx = int('0'+'nx')
result = int(nx[0]) + int(nx[1])
nx = result
count += 1
if result == int(origin): # result가 아니라 nx가 와야 함. 처리과정이 너무 길어져서 멈춘것
break
print(count)
....뭐가 잘 못 된걸까... 프로그램이 멈췄다...
x = input()
origin = x
count = 0
while True:
if int(x) < 10:
x = 0 + x
result = str(int(x[0])) + str(int(x[1]))
x = int(result[0]) + int(result[1])
count += 1
if result == int(origin):
break
print(count)
대차게 오류난다.
다른 사람들 풀이를 보니 int(x) < 10 대신 len함수를 써서 바꿔보았다.
x = input()
origin = x
count = 0
while True:
if len(x) == 1:
x = '0' + x
result = str(int(x[0]) + int(x[1]))
x = str(int(x[0]) + int(x[1]))
count += 1
if result == origin: # result말고 x와야 함
break
또 멈춤...미쳐버리겠다
이젠 걍 정답을 아주 샅샅이 보고 분석하겠다.........
x = input()
origin = x
count = 0
while True:
if len(x) == 1:
x = '0' + x
result = str(int(x[0]) + int(x[1]))
x = x[-1] + result[-1] # result가 한자리 일 수도 있으므로 result(1) 대신 result(-1)
count += 1
if result == origin: #result 말고 x
print(count)
break
또류, 또 오류란 뜻
또멈, 또 멈췄다는 뜻
x = input()
origin = x
count = 0
while True:
if len(x) == 1:
x = '0' + x
result = str(int(x[0]) + int(x[1]))
x = x[-1] + result[-1] # result가 한자리 일 수도 있으므로 result(1) 대신 result(-1)
count += 1
if x == origin: # 문제를 이해하자...
print(count)
break
이어붙인 수 : x
새로운 수 : result
원래 수 : origin
이어붙인 수와 원래 수가 같으면 멈추는 거!!!!!!
이런 미친 시간 초과 뜸!!!!!!!!!!!!!!!!!
결과 자체는 나오는데 시간초과가 뜨니 아예 새로운 방법으로 해야 한다.
x = int(input())
origin = x
count = 0
while True:
a = x // 10 #26에서 2
b = x % 10 #26에서 6
c = a + b
x = b*10 + c%10
count += 1
if x == origin:
print(count)
break
아주 미쳐버리는 줄 알았지만...어찌어찌 했다...
'BaekJoon' 카테고리의 다른 글
백준 문제 풀이 for 문, input()대신 sys.stdin.readline()을 사용하는 이유 (0) | 2021.10.20 |
---|---|
백준 문제 풀이 if문 (2) | 2021.10.18 |