본문 바로가기

Algorithm/BOJ

[기초] 03. for문

 

📪 for문

 

for문 단계

1부터 N까지의 합을 구하는 문제. 물론 반복문 없이 풀 수도 있습니다.

www.acmicpc.net

 


 

 

📌 문제1. 구구단 [2739번]

n = int(input())

for i in range(1, 10):
    print(str(n) + " * " + str(i) + " = " + str(n * i), end='\n')
  • 다른 type을 나열하고 싶은 경우 :  ','로 나열. (Ex. print(a,"*",i,"=",a*i) )
  • 모두 문자열인 경우 : '+'로 문자열 합치기. (Ex. print("a"+"*"+"i"..) )

 

 

 

 

📌 문제2. A+B-3 [10950번] 

n = int(input())

for i in range(n):
    a, b = map(int, input().split())
    print(a+b, end='\n')

 

  ※ 다른 풀이 보기

더보기
import sys

T = int(input()) #Test case
for i in range(T):
        a,b = map(int, sys.stdin.readline().split())
        print(a+b)
  • input 메소드보다 sys.stdin.readline() 메소드가 속도 빠름.
    따라서 문자열을 여러번 입력받을 경우, input X. sys.stdin.readline() O
  • sys.stdin.readline()은 문자열형이며 '개행문자' 필수 포함. 따라서 '.strip()'을 해줘야 '\n'이 제거됨.
  • sys.stdin.readilne()을 정수형으로 사용하고 싶다면 int()화 해주어야 함.

 

 

 

📌 문제3.  [8393번]

✔️ 합 = 'n*(n+1)/2' 

n = int(input())
print(n*(n+1)//2)

 

  ※ 다른 풀이 보기

더보기
print (sum(range(int(input())+1)))

 ✔ 파이썬에 sum(iterable) 有 

 

 

 

📌 문제4. 빠른 A+B [15552번]

✔️ Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다.
     단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에
.rstrip()을 추가로 해 주는 것이 좋다.

import sys
t = int(sys.stdin.readline())  # 최대 백만
for i in range(t):
    print(eval('+'.join(sys.stdin.readline().rstrip().split())))

→ 시간 오버 됨. (eval과 join때문인듯)

import sys
t = int(input())  # 최대 백만
for i in range(t):
    a, b = map(int, sys.stdin.readline().split())
    print(a+b)

 

 

 

 

📌 문제5. N 찍기 [2741번]

n = int(input())  
for i in range(n):
    print(i+1)

 

  ※ 다른 풀이 보기

더보기
n = range(1, int(input()) + 1)
print('\n'.join(map(str, n)))

→ print문의 경우, 횟수가 작을수록 빠르기에 줄이는 것이 좋다.

 

 

 

 

📌 문제6. 기찍 N [2741번]

[풀이 1] 

n = int(input())
for i in range(n,0,-1):
    print(i)

[풀이 2] 

n = int(input())
for i in reversed(range(1,n+1)):
    print(i)

 

  ※ 다른 풀이 보기

더보기
n=int(input())
print("\n".join(map(str, range(n, 0, -1))))

→ print문의 경우, 횟수가 작을수록 빠르기에 줄이는 것이 좋다.

 

 

 

📌 문제7. A+B-7 [11021번]  

import sys

n = int(sys.stdin.readline())
for i in range(n):
    a, b = map(int, sys.stdin.readline().split())
    print(f"Case #{i + 1}: {a + b}")

문자와 변수 한번에 출력하기 :  f" { } "

 

  ※ 다른 풀이 보기

더보기
import sys
num=int(input())

for i in range(num):
    a,b=map(int,sys.stdin.readline().split())
    print("Case #%d:"%(i+1),a+b)

 

 

 

📌 문제8. A+B-8 [11022번]

import sys

n = int(sys.stdin.readline())
for i in range(n):
    a, b = map(int, sys.stdin.readline().split())
    print(f"Case #{i + 1}: {a} + {b} = {a + b}")

 

 

 

 

📌 문제9. 별 찍기(1) [2438번]

import sys

n = int(sys.stdin.readline())
for i in range(n):
    print("*"*(i+1), end="\n")

 

 

 

📌 문제10. 별 찍기(2) [2439번]

n = int(input())
for i in range(1, n+1):
    print(" " * (n-i) + "*" * i)

 

 

 

 

📌 문제11. X보다 작은 수 [10871번]

n, x = map(int, input().split())
list_A = list(map(int, input().split()))
for element in list_A:
    if element < x: print(element, end=" ")

 

  다른 풀이 보기

더보기
import sys
in_put = sys.stdin.readline

N, X = map(int, in_put().split())
out = [str(n) for n in map(int, in_put().split()) if n < X]

print (' '.join(out))

 

 

 

 


 

🔔 중요개념정리

    1.  print 문에서 합치기 
       → ','(다른 type들) 
       → '+'(str만)
    2.  range(시작O, 끝X, step)
    3.  입력문
       → [일반적] input
       → [입력多] sys.stdin.readline()                    
    4.  print문
       → 횟수가 적을 수록 좋음. 
       →
      .join등으로 최대한 하나로 표현.
    5.  range와 내림차순
       → step=음수
       → reversed 사용
    6.  문자와 변수를 한번에 출력하는 법 ⭐
       → f" { } "
       → "  %d"%(숫자) 

 

728x90

'Algorithm > BOJ' 카테고리의 다른 글

[기초] 06. 함수  (0) 2022.02.21
[기초] 05. 1차원 배열  (0) 2022.02.07
[기초] 04. while문  (0) 2022.02.07
[기초] 02. If문  (0) 2022.02.06
[기초] 01. 입출력과 사칙연산  (0) 2022.02.04