ABOUT ME

꾸준함은 성공의 지름길

Today
Yesterday
Total
  • 백준 문제풀이-단계별 문제풀이 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문을 풀어보겠습니다.

    댓글

Designed by Tistory.