2739 - 구구단

(https://www.acmicpc.net/problem/2739)


문제

N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.

입력

첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다.

출력

출력형식과 같게 N*1부터 N*9까지 출력한다.


​아.. 하루 방구냄새..

1
2
3
4
= int(input())
 
for i in range(1,10):
    print(f'{n} * {i} = %d'%(n*i))
cs

1트 성공!

+ 예전에 f 스트링 쓸 때 {n*i}이런거 안 됐었던 기억 때문에 % 포매팅으로 쓰고 있었는데,

오늘 스터디하면서 사실 되는 거였다는 걸 알게 됐다.

10950 - A+B - 3

(https://www.acmicpc.net/problem/10950)


문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

각 테스트 케이스마다 A+B를 출력한다.


1
2
3
4
5
= int(input())
 
for i in range(T):
    A, B = map(int, input().split())
    print(A+B)
cs

1트 성공


 8393 - 합

(https://www.acmicpc.net/problem/8393)


문제

n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.

출력

1부터 n까지 합을 출력한다.


전에 이용했던 재귀함수로다가 시그마를 고대~로 쓰려다가.

for, while을 배우고 있어서 적용해봤다.

1
2
3
4
5
6
7
8
= int(input())
 
sum = 0
 
for i in range(1, n+1):
    sum += i
 
print(sum)
cs

1트 성공


15552 - 빠른 A+B

https://www.acmicpc.net/problem/15552


문제

본격적으로 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()을 추가로 해 주는 것이 좋다.

 

또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다.

테스트케이스를 하나 받은 뒤 하나 출력해도 된다.

입력

첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.

출력

각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.


처음으로 sys.stdin.readline과 맞닥뜨렸다.

input과 동일하게 쓸 수 있지만 다른 점은 사용자가 입력하는게 아니라

어딘가에서 많은 양으로 입력받을 때 연산속도가 빨라지는 거 인듯.

1
2
3
4
5
6
7
import sys  #sys 불러오기
 
= int(input())  #테스트케이스 T가 주어진다.
 
for i in range(T):  #T만큼 반복한다.
    A, B = map(int, sys.stdin.readline().split()) #A, B를 sys.stdin.readline으로 빠르게 받는다.
    print(A + B)  #받은 A, B를 프린트한다.
cs

다행히 한번에 성공했다.

앞으로 주석달면서 하면 나한테 더 좋을 듯.


오늘 지나가면서 배웠던 lambda, 그리고 중첩함수와 영역(scope)

+

전역변수, 지역변수, nonlocal과 global 변수선언 등

 

꽤 어려운 개념들이 많이 나왔는데 스터디 분들과 얘기하면서 많이 배웠다.

 

날이 지나면서 늘어가는게 느껴지고 욕심도 생긴다.

아무 생각 없이 정보처리기사 문제집을 구매하긴 했는데..

체력적으로 조금 힘들고 귀찮긴 하지만 해보면 나쁠게 없지.

 

재밌다 코딩~

 

 

3번 테마의 4번째까지 총 24개 풀었어.

앞으로 361개의 문제가 남았어. (6.2%)

복사했습니다!