-
백준 문제풀이-단계별 문제풀이 3단계 for문 (python, 2739, 10950, 8393, 15552, 2741, 2742, 11021, 11022, 2438, 2439, 10871)문제 풀이/Baekjoon 2021. 2. 16. 06:28
안녕하세요! 오늘은 백준 단계별 문제풀이 중 3단계인 for문을 풀어보겠습니다.
우선 python에서는 for문을 아래와 같이 사용할 수 있습니다.
(오늘은 코드블럭을 사용해서 예시를 보여드리겠습니다.)
num = 5 for i in range (num): print('hello world') list =[1,2,3,4,5] for i in list: print('hello world') string= "hello world" for i in string: print(i) for _ in range(num): print("hello world") # 매개 변수가 없을 수 있음 a = [1, 2, 4, 3, 5] for i, val in enumerate(a): #enumerate()함수를 이용해서 인덱스와 값 모두 사용 가능 print(i, val) a= [100,90,80,70,60,50] for num in a: if num <80 : break # for 문 탈출 print(num) a= [100,90,80,70,60,50] for num in a: if num<80 and num>=70: continue # 해당 조건을 성립하는 경우에는 건너뛰고 다음꺼 실행 print(num) python에서 for문은 in을 사용하며 in 이후에는 범위를 표현해주는데 그냥 정수형 변수라면 range()함수를 사용해서 범위를 지정해주고, list라면 list의 크기 , str 이라면 문자열의 길이만큼 수행합니다.
int num = 10; for( int i=0;i<num;i++){ print("hello world"); if (num >10) { cerr<<"runtime error"; } else if (i==5) continue; } 2739번 구구단
https://www.acmicpc.net/problem/2739 풀이
우선 구구단 문제입니다. 단순히 몇 단을 출력할지 수를 입력을 받은 후 i는 1부터 9까지 순회하도록 하여 출력합니다.
파이썬은 반열린구간을 채택하였기 때문에 range(1,10)은 범위로 1<= i <10 이라고 생각하시면 됩니다.
num =int (input()) for i in range(1,10): print(num,'*',i,'=',num*i) 10950번 A+B - 3
https://www.acmicpc.net/problem/10950 풀이
우선 몇 번을 순회할 지 cycle을 입력을 받습니다. 이후 for문 안에서 a와 b 값을 입력받은 후 두 수를 합한 값을 출력합니다.
cycle = int(input()) for i in range(0,cycle): a, b = map(int, input().split()) print(a+b) 8393번 합
https://www.acmicpc.net/problem/8393 풀이
간단하게 sigma와 같은 프로그램을 만드는 것입니다. size 값을 입력받고 합인 sum을 우선 0으로 초기화 해준 다음
1부터 size에 해당하는 값까지 순차적으로 더하면 됩니다.
size = int (input()) sum = 0 for i in range(1,size+1): sum += i print(sum) 15552번 빠른 A+B
https://www.acmicpc.net/problem/15552 풀이
sys라는 모듈안에 있는 sys.stdin().readline()을 사용하기 위해 import 를 해준 후 input()대신에 사용하는 문제입니다.
둘 다 값을 입력받는 용도로 사용됩니다. 자세한 설명은 위 문제를 읽어주시길 바랍니다.
import sys T =int (input()) for i in range(T): a,b= map (int, sys.stdin.readline().split()) print(a+b) 2741번 N 찍기
https://www.acmicpc.net/problem/2741 풀이
합을 구하는 것보다 더 쉬운 단순히 출력하는 문제입니다. 그냥 하면 됩니다.
size = int (input()) for i in range(1,size+1): print(i) 2742번 기찍 N
https://www.acmicpc.net/problem/2742 풀이
위 문제와 유사하지만 시작점이 다르기 때문에 res값을 num 값으로 초기화 해주고 이를 1씩 빼가면서 출력합니다.
num = int (input()) res=num for i in range(num): print(res) res-=1 11021번 A+B -7
풀이
print문을 이제 익숙하게 사용할 수 있는지 묻는 문제입니다.
cycle = int(input()) for i in range(1,cycle+1): a,b =map(int,input().split()) print('Case #',i,': ',a+b,sep='') 11022번 A+B -8
https://www.acmicpc.net/problem/11022 풀이
위 문제와 같습니다.
cycle = int(input()) for i in range(1,cycle+1): a,b =map(int,input().split()) print('Case #',i,': ', a,' + ',b,' = ' ,a+b,sep='') 2438번 별 찍기 - 1
https://www.acmicpc.net/problem/2438 풀이
나중에 문자열 단계를 풀게되면 알겠지만 문자열을 곱하게 되면 곱해진 수 만큼 출력이 됩니다.
cycle =int(input()) for i in range (1 ,cycle+1 ): print('*'*i) 2439번 별 찍기 - 2
https://www.acmicpc.net/problem/2439 풀이
위 문제와 유사하지만 시작은 공백으로 시작하게 됩니다. 그러니 star의 갯수가 증가함에 따라 공백의 수를 줄이도록 코드를 작성하면 됩니다.
star= int(input()) for i in range(1,star+1): print(' '*(star-i),'*'*i,sep='') 10871번 X보다 작은 수
풀이
위 문제는 몇 개의 숫자를 받을지를 알려줄 N과 기준인 X의 값을 입력받습니다. 그 다음 a라는 리스트에 값을 차례대로 넣어줍니다. 이후 리스트에 있는 value 들을 순환하면서 작은 값이 있으면 그 순간 출력해주면 됩니다.
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=' ') 오늘은 백준(BOJ)에 올라와 있는 for문 문제를 풀어보았습니다. 만약 질문이 있거나 좀 더 좋은 코드가 있으면 댓글 부탁드립니다~
다음에는 while문을 풀어보겠습니다.