📍2739번 구구단 문제를 풀면서 1부터 9까지의 반복문을 돌리는 방법을 찾다가 range함수를 알게되었다.
🌀range 함수 : 특정 구간의 숫자의 범위를 만들어주는 함수. 특정 횟수 만큼 반복하는 반복문 만들기에 유용!
1) range(A) => 0부터 A-1까지의 정수 범위를 반환
2) range(A, B) => A부터 B-1까지의 정수 범위를 반환
3) range(A, B, C) => A부터 B-1까지의 정수 범위를 C 숫자만큼의 간격으로 반환
🌀range(1,10) 함수를 사용해서 1부터 9까지 반복문을 돌릴수 있다.
N = int(input())
for i in range(1,10):
print(N, '*', i, '=', N*i)
📍25304번 영수증
X = int(input())
N = int(input())
total = 0
for i in range(N):
a, b = map(int, input().split())
total += a*b
if X == total:
print('Yes')
else:
print('No')
📍11021번, 11022번 F-String 으로 출력하기
각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다.
print(f'Case #{i}: {A+B}')
print(f'Case #{i}: {A} + {B} = {A+B}')
📍2439번 별 찍기-2
N = int(input())
for i in range(1, N+1):
print((" "*(N-i))+("*")*i)
=> 각 라인마다 별표 앞에 공백을 N-i만큼 출력해주면 되기 때문에 (" " )* (N-i) 로 공백을 표현했다.
📍10871번 X보다 작은 수
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=" ")
=> 둘째 줄에 수열 A를 이루는 정수 N개를 입력받아야 하기 때문에 입력받은 숫자들을 배열로 넣어준다. 그리고 출력된 숫자들 사이에 간격을 주기 위해서 end=" "를 함께 print해준다.
📍10952번 A+B -5
while True:
A, B = map(int, input().split())
if (A==0 and B==0) :
break
else:
print(A+B)
=> 앞에 문제들에서는 for문에서 몇번 반복할지 범위를 주는 변수를 입력받았었는데 이 문제에서는 입력값이 0 0 일때까지 계속 테스트케이스를 출력하는 문제이기 때문에 for문이 아니라 while문을 사용해야한다! 그래서 while문에 대해 정리해보았다.
⭐️while 반복문: 조건식이 참(True)일 때 반복하고 거짓(False)일 때 반복을 끝냅니다.⭐️
🌀while 반복문: 반복 횟수가 정해져 있지 않을 때 주로 사용!
🌀for 반복문: 반복 횟수가 정해져 있을 때 자주 사용!
🌀while True : or while 1: => while에 조건문 대신 True 혹은 1을 지정하면 무한하게 반복하는 무한루프 생성. 조건식이 항상 참이기 때문에 다른 조건은 필요없다.
🌀break : break조건을 만들어 반복문이 끝나는 시점을 정해준다! 이 문제에서는 0 0이 입력되면 종료되는 것으로 설정해야 하니까 이 조건을 만족할 때 break 하라고 지정하면 될 것이다.
📍10951번 A+B-4
위 문제랑 같은 문제이지만 실행을 멈추는 조건이 제시되어 있지 않다. 즉, 변수 A,B에 입력이 없으면 에러가 나는 것이다. 그래서 try-except구문을 사용해야한다!!! try구문에는 에러가 날 가능성이 있는 문장을 작성하고, except구문에는 에러가 발생한다면 실행할 문장을 작성한다.
📍1110번 더하기 사이클
input_num = int(input())
num = input_num #num변수에 input_num을 지정
count = 0 #사이클 횟수
while True:
sum_num = (num // 10) + (num % 10) #각 자릿수를 더한 수
new_num = ((num % 10) * 10) + (sum_num % 10) #새로 만들어지는 수
count += 1 #사이클 카운트
if new_num == input_num:
break
num = new_num #조건 만족하지 않으면 새로 만들어진 숫자를 다시 num에 넣고 또 반복
print(count)
입력받는 숫자를 num이라는 변수에 집어넣는다. count는 사이클의 횟수를 가리키는 변수이다.
변수 sum_num 은 각 자리의 숫자를 더한 수를 나타낸다.
변수 new_num은 num의 일의 자리숫자와 sum_num의 일의자리 숫자를 합친 결과를 나타낸다.
🌀num // 10 을 하면 십의 자리 숫자를 표현할 수 있고, num % 10 을 하면 일의 자리 숫자를 표현할 수 있다. 🌀
sum_num = (num // 10) + (num % 10)
new_num = ((num % 10) * 10) + (sum_num % 10)
(ps.위 코드는 생각하지도 못한 방법이다.... 대체 저걸 어떻게 표현하지 한참 고민했던 거 같다. 결국 구글링 했지만....🫠)
'Coding Test > 백준 단계별로 풀어보기' 카테고리의 다른 글
백준 단계별로 풀어보기 - 11665번, 11720번, 10809번, 2675번,1175번,1316번 (0) | 2022.09.10 |
---|---|
백준 단계별로 풀어보기 - 4673번, 1065번 (0) | 2022.09.07 |
백준 단계별로 풀어보기 - 10818번,2562번, 1546번, 8958번 (0) | 2022.09.06 |
백준 단계별로 풀어보기 - 2753번, 2480번, 2884번, 2525번 (0) | 2022.09.02 |
백준 단계별로 풀어보기 - 2588번, 3003번, 고양이, 강아지, 새싹 (0) | 2022.09.01 |