for문
2739번 구구단
문제
N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.
입력
첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다.
출력
출력형식과 같게 N*1부터 N*9까지 출력한다.
Python풀이
a=int(input())
for i in range(1,10):
print(a,'*',i,'=',a*i)
10950번 A+B - 3
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 A+B를 출력한다.
Python풀이
a=int(input())
for i in range(a):
b,c=input().split()
b=int(b)
c=int(c)
print(b+c)
input으로 반복할 횟수를 정해주고 for문을 돌려주면 된다.
8393번 합
문제
n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.
출력
1부터 n까지 합을 출력한다.
Python풀이
a=int(input())
sum=0
for i in range(1, a+1):
sum+=i
print(sum)
range는 0부터 횟수 -1까지 반복하기 때문에 a+1을 해줘서 풀 수 있다.
15552번 빠른 A+B
문제
본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.
C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다.
Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다.
Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다.
또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다. 테스트케이스를 하나 받은 뒤 하나 출력해도 된다.
자세한 설명 및 다른 언어의 경우는 이 글에 설명되어 있다.
이 블로그 글에서 BOJ의 기타 여러 가지 팁을 볼 수 있다.
입력
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
출력
각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.
Python풀이
import sys
inp = int(input())
for i in range(inp):
a,b = sys.stdin.readline().split()
a=int(a)
b=int(b)
print(a+b)
sys.stdin.readline()를 사용하기 위해 import sys를 쓰고, input()대신 sys.stdin.readline()를 써주면 된다.
2741번 N찍기
문제
자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄부터 N번째 줄 까지 차례대로 출력한다.
Python풀이
a=int(input())
for i in range(1,a+1):
print(i)
2742 기찍N
문제
자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄부터 N번째 줄 까지 차례대로 출력한다.
Python풀이
a=int(input())
for i in reversed(range(1,a+1)):
print(i)
reversed를 사용해서 값의 순서를 뒤집을 수 있다.
11021번 A+B - 7
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.
Python풀이
a=int(input())
for i in range(a):
b,c=input().split()
b=int(b)
c=int(c)
print("Case #{}: {}".format(i+1,b+c))
range는 0부터 반복되기 때문에 i+1을 해줘야 한다.
11022번 A+B - 8
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다.
Python풀이
a=int(input())
for i in range(a):
b,c=input().split()
b=int(b)
c=int(c)
print("Case #{}: {} + {} = {}".format(i+1,b,c,b+c))
11021번의 풀이에서 A+B의 값만 추가해주면 된다.
2438번 별찍기 - 1
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
Python풀이
a=int(input())
for i in range(1,a+1):
print("*"*i)
파이썬에서는 print문이 끝난후 자동으로 개행되기때문에 별*i값으로 간단하게 풀 수 있다.
2439번 별 찍기 - 2
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
Python풀이
a=int(input())
for i in range(1,a+1):
print(" "*(a-i)+"*"*i)
i값이 커질수록 공백의 갯수는 적어지고 *의 갯수는 많아진다.
10871번 X보다 작은 수
문제
정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
출력
X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.
Python풀이
a,b=map(int,input().split())
c=list(map(int,input().split()))
for i in range(a):
if c[i]<b:
print(c[i],end=' ')
map함수를 이용해서 c라는 리스트 안에 int형 정수를 입력받는다.
while문
10952번 A+B - 5
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
입력의 마지막에는 0 두 개가 들어온다.
출력
각 테스트 케이스마다 A+B를 출력한다.
Python풀이
while(1):
a,b=input().split()
a=int(a)
b=int(b)
if a==0 and b==0:
break
print(a+b)
while 1 로 무한루프를 돌린 뒤에 a==0 and b==0의 조건을 만족할때 break를 실행해 while문을 빠져나온다.
1110번 더하기 사이클
문제
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.
26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.
위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.
N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.
출력
첫째 줄에 N의 사이클 길이를 출력한다.
N=int(input())
tmp=N
cnt=0
while True:
n=tmp//10 #10의자리 수
m=tmp%10 #1의 자리수
cnt+=1
tmp=(tmp%10)*10+(n+m)%10 #tmp의 1의 자리 *10+(n+m)의 1의자리
if N==tmp:
break
print(cnt)
N을 입력받는다. 그리고 나중에 값을 비교 해야하기 때문에 tmp에 a값을 저장한다.
그 후 반복문에서 tmp//10, tmp%10으로 10의 자리수와 1의 자리수를 분리한다.
tmp의 1의자리*10과 1의자리와 10의자리수의 합을 더한 값이 자기자신인 a와 같으면 반복문을 빠져나온다.
'Emotion > 문제' 카테고리의 다른 글
백준 숫자의 합 (0) | 2020.09.02 |
---|---|
백준 달팽이는 올라가고싶다, 별찍기_21 (0) | 2020.08.26 |
코드업 1526~1536 (0) | 2020.07.08 |
백준 if문 (0) | 2020.07.01 |
백준 입출력과 사칙연산(Python) (1) | 2020.06.26 |