2022. 9. 20. 01:21ㆍ백준 문제 풀이/파이썬
1) 2738 ( ㅇ )
>오답
가)
n=int(input())
print(n*1)
print(n*2)
print(n*3)
print(n*4)
print(n*5)
print(n*6)
print(n*7)
print(n*8)
print(n*9)
▶문제를 제대로 안읽음.(예제 출력을 제대로 확인)
나)+연산자를 활용해서 컴퓨터가 제대로 인식 못함. +대신에 ,를 써서 해결
N = int(input())
list_ = range(1,10)
for i in list_:
print(N+"*"+i+"="+N*i)
>정답
가)그냥 단순식(좋은 정답은 아님)
a=int(input())
print(a,'*','1','=',a)
print(a,'*','2','=',2*a)
print(a,'*','3','=',3*a)
print(a,'*','1','=',4*a)
print(a,'*','1','=',5*a)
print(a,'*','1','=',6*a)
print(a,'*','1','=',7*a)
print(a,'*','1','=',8*a)
print(a,'*','1','=',9*a)
나)반복문 이용
N = int(input())
list_ = range(1,10)
for i in list_:
print(N,"*",i,"=",N*i)
2)10950( △ )
>오답
가)
a,b = list(map(int,input()))
T =int(input())
for c in a,b:
print(a+b)
나)
T=int(input())
a,b=map(int,input().split())
for i in range(0,T+1) :
print(a+b)
▶결과가 2 2 2 2 2 아래로 찍힘.
>정답
T=int(input())
for i in range(0, T) :
a, b = map(int, input().split())
print(a+b)
▶계산 결과값 출력이 각 연산 a+b를 해줄때마다 밑으로 붙는데 이렇게 나와도 백준에서 정답으로 인정해줌.
▶오답코드와 비교해보면 a,b = map(int,input().split())의 위치에 따라 출력값이 달라지는 것을 알 수 있다. for문 안에 a,b를 해줘야 정답이 되는데 나)오답을 코드를 활용할 경우 for문보다 상위에 있어서 그런지 한번 찍으면 끝나버린다. 하지만 for하위에 작성해주니 한번씩 찍어볼 기회를 준다.
3)8395()
>오답
가)
n = 0
add=add+1
for add in n:
print(add)
나)
N=int(input())
n=0
for i in range(N):
n += 1
print(n)
▶근본 없는 코드... 우선 입력값이랑 더해줘야하는 값을 지정하는 것은 했는데, range의 범위를 잘못지정했고 for문안에 들어가는 계산 식도 잘못됐음. 저 코드로 가정해보면, N=2일때 for i in range(2)가되고 n은 0에 2를 더한 값인 2가 출력됨. 이렇게하면 사실상 for문안에 n += 1은 의미가 없음. 차라리 n에다가 i를 더해주는 것은 어떨까? 그러면 N= 4일때 for i in rang(4)가 되고 n은 0에 for문이 돌아가면서 0부터 찍힘. 0+0, 0+1, 0+2, 0+3과 같은식으로 range는 n-1 까지 찍히므로 합이 6이됨. 그럼 여기서 N+1까지 범위를 지정해준다면 정답.
>정답
N=int(input())
sum=0
for i in range(1, N+1):
sum += i
print(sum)
4)25304( x )
>오답
가)
a,b = list(map(int,input()))
for a,b in a,b:
if x=a*b and n=b
print(Yes),
else:
print(No)
나)
X=int(input())
N=int(input())
sum= 0
for i in range(N):
a,b = map(int,input().split())
sum += (a*b)
if X == sum :
print("Yes")
else:
print("No")
다)
X=int(input())
N=int(input())
sum= 0
for i in range(N):
a,b = map(int,input().split())
result = (a*b)
sum += i+result
if X == sum :
print("Yes")
else:
print("No")
▶나)보다 발전한 것은 result를 따로 빼주고 그 값을 i에다 계속 더해주는 것. 근데 오류나는 것이 한번에 결과값만 출력하면 되는데 왜 각각 값으로 나오는 거지? if문 안에 for문을 넣어볼까?
라)
X=int(input())
N=int(input())
if X == sum:
print("Yes")
sum= 0
for i in range(N):
a,b = map(int,input().split())
result = (a*b)
sum += i+result
else:
print("No")
▶바로 오류남. 26000이랑 4만 대입했는데 No라는 결과값이 나온다. 어디서 끊어야할 것인가...
>정답(구글링)
X=int(input())
N=int(input())
sum= 0
for i in range(N):
a,b = map(int,input().split())
result = (a*b)
sum += result
if X == sum:
print("Yes")
else:
print("No")
▶if문을 아예 밑으로 빼줬다. 변수를 sum이라고 해줘서 맨 위로 뺐고, 그 변수(sum)의 첫값을 0으로 하고 돌면서 a*b의 값을 더해주는 느낌으로 풀어 나간듯하다.
5)15552 ( x )
-오답
손도 못댐
T =int(input())
A,B = map(int,input())
for i in range(T):
result = A + B
print(result)
-정답
import sys
T = int(input())
for i in (range(1, T+1)) :
a,b = map(int, sys.stdin.readline().split())
print(a+b)
6)11021()
>오답
가)
T=int(input())
A,B=map(int,input().split())
for i in range(T+1):
result = A+B
print(f"Case #{i}: {result}")
▶결과는 5 / 1 1 만 입력했는데 바로 Case #5 : 2 가 나온다. while로 돌리고 break로 깨줄까나...
나)
T=int(input())
A,B=map(int,input().split())
while True:
for i in range(T+1):
if i == T+1:
break
result = A+B
print(f"Case #{i}: {result}")
▶함수가 무한대로 들어간다;;; 환장하겄네...
다)
T=int(input())
A,B=map(int,input().split())
while True:
for i in range(T+1):
result = A + B
print(f"Case #{i}: {result}")
if int(i) == int(T+1):
break
▶계속 오류...
우선 for에서도 break 된다.
for i in range(10000)
print(i)
if i == 100:
break
라)
T=int(input())
A,B=map(int,input().split())
for i in range(T+1):
result = A + B
print(f"Case #{i}: {result}")
if i == T+1:
break
▶5
1 1
입력하면
Case #0: 2
Case #1: 2
Case #2: 2
Case #3: 2
Case #4: 2
Case #5: 2
가 나옴.
종료 코드 0(으)로 완료된 프로세스
>정답(구글링)
가)다른사람 블로그
T = int(input())
for i in range(1,T+1):
a,b = map(int, input().split())
print("Case #"+str(i)+':',a+b)
▶우선 a,b를 여러번 찍고 싶을 경우 맨위가 아니라 for문 안에 넣어줘야한다. for문 안에 있어야 i번만큼 input()할 수 있기 때문이다. 그리고 예제 출력에서 나온 값이 한번에 나오게 할 필요는 없고 입력할 때마다 그에 맞는 출력값이 나온다고해도 백준문제채점은 맞는답이라고 나온다.
나)내가 쓴 것
T=int(input())
for i in range(T):
A,B=map(int,input().split())
print(f"Case #{i+1}: {A+B}")
7)11022( ㅇ )
>정답
T= int(input())
for i in range(T):
A,B = map(int,input().split())
print(f"Case #{i+1}: {A} + {B} = {A+B}")
▶ 6)문제 응용
8)2438( ㅇ )
>정답
N=int(input())
for i in range(1,N+1):
print('*'*i)
▶처음에 i를 곱해줘야 할 것을 바로 N곱했더니 밑에 입력값만큼의 별이 입력값 만큼 나왔다...
9)2439 ( △ )
>오답
N=int(input())
for i in range(1,N+1):
print(" "*(N-i),'*'*i)
▶출력값이 올바르지 않다고한다. 자세히보니 맨 앞에 한칸이 띄어진 것 같기도 하고.. 뭐가 문젤까.. 그래서 계산해보니 N-i+1을 해줬는데 이것도 안된다.
>정답(구글링)
구글링해보니 기한 함수?도 있다 rjust/ljust인데 공백주고 한쪽으로 정렬해주는 것!
n=int(input())
for i in reversed(range(n)):
print((i*' ').ljust(n,'*'))
10)10871 ( )
>오답
import random
N,X=map(int,input().split())
for i in range(N):
if X < N:
print(값)
>정답
N,X=map(int,input().split())
a=list(map(int,input().split()))
for i in range(N):
if a[i] < X :
print(a[i], end=" ")
11)10952( )
>오답
가)
for i in range(0):
a, b = map(int, input().split())
if a==0 and b==0:
break
▶for 함수는 끝이 있을때 사용, while 함수는 끝이 정해져 있지 않을때 무한이 돌때 사용
나)
while True:
a,b=map(int,input().split())
print(a+b)
if a==0 and b==0:
break
>정답
while True:
a,b=map(int,input().split())
if a==0 and b==0:
break
print(a+b)
▶while 문 쓸때 깨지는 조건을 먼저 써주고 그 조건에 해당되지 않을때는 어떻게할지 밑에 print() 해주는 것이 관건.
10951 ( x )
>오답
while True:
a,b=map(int,input().split())
print(a+b)
>정답
while True:
try:
a, b = map(int, input().split())
except:
break
print(a+b)
▶숫자 입력안되서 에러 발생하면 반복문 끝내도록 try, except 사용
1110( x )
>오답
손도 못댐
>정답
N = int(input()) #입력받은 값을 int로 바꿈
num = N #변하는 값
count = 0 #몇 번 사이클인지
while True:
a = num//10
b = num %10
c = (a+b)%10
num = (b*10) + c
count += 1
if(num == N):
break
print(count)
'백준 문제 풀이 > 파이썬' 카테고리의 다른 글
| [백준 문제풀이/파이썬] 2단계_조건문 (0) | 2022.09.16 |
|---|---|
| [백준 문제풀이/파이썬] 1단계_입출력과 사칙연산 (0) | 2022.09.16 |
| [백준문제풀이/파이썬] 4단계_1차원배열 (0) | 2022.09.15 |
| [백준파이썬] 7단계_기본 수학 1 (0) | 2022.09.14 |