목차
구구단 (#2739)
- Hint
문제 내 출력창에 있는 형식 (spacebar) 에 주의
- Solution
a=int(input())
for i in range(1,10):
print(f'{a} * {i} = {a*i}')
A+B - 3 (#10950)
- Hint
입출력을 하나의 반복문에 넣기는 어렵다고 판단하여 리스트를 사용하였다.
출력 조건을 충족 시키려고
print(*리스트변수명 , sep='\n')
위와 같이 표현하였다.
- Solution
count = int(input())
result = []
for i in range(count):
a, b= map(int ,input().split())
result.append(a+b)
print(*result, sep='\n')
합 (#8393)
- Hint
range(a) : 반복문을 a 번 반복
for i range(n)
에서의 i는 초기값이 0이므로 i를 합 인자로 사용하려면
for i range(n+1)
로 반복 횟수를 1회 증가시켜줘야 0, 1, 2 . . . (n) ,(n+1) 번 더해진다.
연속된 자연수의 합공식을 알고 있다면 더 간단히 해결 가능하다.
- Solution
반복문 이용한 풀이
a=int(input())
result=0
for i in range(a+1):
result += i
print(result)
자연수 합공식 이용한 풀이
a=int(input())
print(a(a+1)//2)
영수증 (#25304)
- Hint
total과 계산된 total (caltotal)을 비교해서 출력을 하게 하는 코드를 짜보았다.
- Solution
total=int(input())
n=int(input())
caltotal=0
for i in range(n):
price, ea = map(int,input().split())
caltotal+=price*ea
if total==caltotal:
print('Yes')
else:
print('No')
빠른 A+B (#15552)
- Hint
sys.stdin.readline()
sys.stdin.readline()
정의 ; Definition sys Python의 인터프리터; Interpreter - 코드를 한줄씩 읽어가며 실행되는 프로그램 에서 제공되는 모듈 중 하나 따라서 이 입력 방법을 사용시에 맨 위에 import sys 를 해주어야 한다.
2022.07.24 - [Python] - sys.stdin.readline()
sys.stdin.readline()
정의 ; Definition sys Python의 인터프리터; Interpreter - 코드를 한줄씩 읽어가며 실행되는 프로그램 에서 제공되는 모듈 중 하나 따라서 이 입력 방법을 사용시에 맨 위에 import sys 를 해주어야 한다. std
nstgic3.tistory.com
- Solution
반복문 이용한 풀이
import sys
n=int(input())
result = []
for i in range(n):
result.append(sum(map(int, sys.stdin.readline().split())))
print(*result, sep="\n")
open() 함수를 이용한 풀이 - open(0) stdin 상태
왜 open(0)에서 0은 뭐고 이것을 stdin 상태라고 부르는것일까?
파일 디스크립터 File Descriptor (fildes)
이번 포스팅에서는 파일 디스크립터와 이것이 사용된 open()에 대해서 알아볼 것이다. 목차 개요 알고리즘 공부에서 항상 숏코딩을 보게 되면 입력받는 input() 대신에 길이가 짧은 open(0)으로 대체
nstgic3.tistory.com
import sys
for n in [*open(0)][1:]:
print(sum(map(int,n.split())))
open(0)
맨 앞의 테스트케이스 T와 그 뒤의 int 쌍을 저장한다.
[*리스트명]
A+B-3 hint 란에 기술
[1: ]
리스트의 첫 번째 이후로 부터의 값을 도출한다. (2번째 ~ )
n (0부터 시작) 번째 open 에 기록된 라인부터 차례대로 출력한다.
반복문을 이용한 풀이와는 다르게 print가 반복되면서 줄바꿈이 시행된다.
N 찍기 (#2741)
- Solution
반복문 이용한 풀이
n = int(input())
for i in range(n):
print(i+1)
range 함수 이용하여 바로 출력하기
print(*range(1,int(input())+1))
range(1, n)
1부터 n까지의 리스트를 생성
기찍 N (#2742)
- Solution
반복문 이용한 풀이
n = int(input())
for i in range(n):
print(n-i)
A+B -7 (#11021)
- Hint
빠른 A+B 의 Solution 참고
- Solution
readline() 이용한 풀이
import sys
n = int(input())
result=[]
for n in range(n):
result.append(sum(map(int, sys.stdin.readline().split())))
for i in range(len(result)):
print(f'Case #{i+1}: {result[i]}')
result 리스트를 생성하여 출력부에서 원하는 두 수의 합을 저장하여 출력을 하는 방식이다.
open() 이용한 풀이
i=0
for a,_,b,_ in [*open(0)][1:]:
i+=1
print(f'Case #{i}:',int(a)+int(b))
open(0)를 통하여 입력을 받고 [1:] 첫째항을 제외한 다음 항부터 입력을 한다.
첫째항(n)이 없어도 n번 만큼 반복이 가능하게 되는 이유는 받아온 입력을 for a,_,b_ 을 통하여
첫째 인수(a), 공백(_), 다음 인수(b), 줄바꿈(\n) 을 한 세트로 받아오기 때문이다.
터미널에서는 왜 실행이 되지 않을까?
A+B -8 (#11022)
- Hint
빠른 A+B 의 Solution 참고
- Solution
readline() 이용한 풀이
import sys
n = int(input())
result = []
for i in range(n):
a,b = map(int, sys.stdin.readline().split())
result.append([a,b,a+b])
for i in range(len(result)):
print(f'Case #{i+1}: {result[i][0]} + {result[i][1]} = {result[i][2]}')
위의 문제와 비슷하지만 result 리스트 내에 리스트를 하나 더 만들어 a, b, a+b 값을 각각 저장하여 리스트 내 리스트를 구현하여 출력하였다.
open() 이용한 풀이
i=0
for a,_,b,_ in [*open(0)][1:]:
i+=1
print(f'Case #{i}:',a,'+',b,'=',int(a)+int(b))
위 문제의 풀이를 아주 조금만 변경하면 쉽게 해결된다.
별찍기 (#2438)
- Hint
반복문을 이용하면서 루프 반복시에 증가하는 값을 이용해보기
- Solution
반복문 두번 사용하기
for i in range(int(input())):
for n in range(i):
print('*', end='')
print('*')
print() 함수 내 출력 str 을 i 곱하여 나타내기
for i in range(int(input())):
print('*'*(i+1))
숏코딩
for i in range(int(input())):print('*'*-~i)
어케했누
별찍기 -2 (#2439)
- Hint
반복문을 이용하면서 루프 반복시에 증가하는 값을 이용해보기
출력시에 공백 개수에 유의하기
- Solution
반복문 두번 사용하기
n = int(input())
for i in range(n):
for s in range(n-i-1):
print(' ', end='')
print('*'*(i+1))
숏코딩
N=i=int(input())
while 0<i:
i-=1
print(" "*i+"*"*(N-i))
위 의 N과 i를 동시에 받아서 하나의 인자만 변화시키는 테크닉은 유용하게 쓰일것 같다.
X보다 작은 수 (#10871)
- Hint
반복문을 이용하면서 루프 반복시에 증가하는 값을 이용해보기
- Solution
for 문과 조건문을 이용
n,std = map(int, input().split())
num_list=[]
num_list = map(int, input().split())
for i in num_list:
if i<std:
print(i, end=' ')
std(기준값)을 리스트에 저장된 인자들과 비교하여 작은 경우에 출력을 하도록 프로그래밍 하였다.
숏코딩
n,x,*a=map(int,open(0).read().split())
for i in a:
i<x==print(i,end=' ')
open(0) 함수를 이용해 전부 불러온 다음에 앞의 두가지 인수를 제외한 나머지 부분을 a의 리스트 내에 저장하였다.
i<x 로 조건식을 만들고 이 조건식이 맞은 경우에 ? 라기에는
n,x,*a=map(int,open(0).read().split())
for i in a:
i<x!=print(i, end=' ')
이것도 같은 결과가 나온다(?)
A+B -5 (#10952)
- Hint
반복문과 조건문의 동시사용을 어떻게 할지 알아보기
리스트 마지막 인자를 제외하고 출력을 하고싶으면 [:-1] 로 표현하면 된다.
- Solution
while을 이용한 풀이
a=[]
i=0
while i == 0:
result = sum(map(int,input().split()))
i=1
if result != 0:
a.append(result)
i=0
for i in a:
print(i)
i를 스위치 처럼 이용하여 풀었는데... 뭔가 더 간단히 표현이 가능할것 같지만 숏코딩은 open 으로 구현하였다.
open()을 이용한 풀이
for a,_,b,_ in [*open(0)][:-1]:
print(int(a)+int(b))
리스트 슬라이싱을 이용하여 맨 뒤의 0을 제외하여 출력하도록 하였다.
A+B -4 (#10951)
- Hint
EOF : 텍스트 파일의 끝을 만나게 되면 얻을 수 있는 값이다.
터미널 내에선 ctrl + z 를 누르고 엔터키를 누르면 된다. getchar : -1
파이썬에서 EOF 를 선언할 경우에는 내장함수 명령인 sys의 readline 함수나 input 함수의 사용시에 끝까지 읽어들이기 때문에 끝나지 않을때 이용하게 되는데
While 문을 사용하게 될 경우에
while True:
try:
except EOFError:
break
이런 식으로 표현해주면 된다.
- Solution
예외처리를 이용한 EOF 발생을 이용한 풀이
while True:
try:
a, b = map(int, input().split())
print(a+b)
except EOFError:
break
input(), readline()의 경우에는 이런식으로 EOFError 를 조건으로 입력을 끝내고 원하는 다음 작동을 할수 있게 한다.
sys의 라이브러리 readlines을 이용한 풀이
import sys
lines = sys.stdin.readlines()
for line in lines:
a,b = map(int, line.split())
print(a+b)
readlines 를 이용하여 전체 문장을 가져온뒤에 반복문을 통하여 하나의 라인씩을 따로 뽑아내 출력하는 방식이다.
open(0) 와 비슷한 계열이라고 보면 쉽다.
open()을 이용한 풀이
for a,_,b,_ in [*open(0)]:
print(int(a)+int(b))
사실은 터미널에서도 EOFError 가 필요해야 제대로 작동하지만 백준의 채점방식은 입력물을 넣고 입력 완료 ^Z 를 하기 때문에 원래는 open을 사용한 풀이도 EOFError 가 들어가야한다.
숏코딩
for i in open(0):print(sum(b'%a'%i)%24)
항상 상위 숏코딩은 대단한것 같다
더하기 싸이클 (#1110)
- Hint
반복문을 이용하면서 루프 반복시에 증가하는 값을 이용해보기
- Solution
while()을 이용한 풀이
a = int(input())
i=0
count = 0
temp = a
while i==0:
count+=1
unit = temp%10
ten = temp//10
tempr = (unit+ten)%10
temp = unit*10 + tempr
if a==temp:
i=1
print(count)
마찬가지로 i를 스위치처럼 이용하여 지정된 조건이 만족시에i 의 값이 바뀌면서 반복을 종료하고 반복구문 내에 있던 count 값을 출력하도록 설계하였다.
'Baekjoon > Stepbystep' 카테고리의 다른 글
[백준/python] 문자열 전체 풀이(6단계) (0) | 2022.07.31 |
---|---|
[백준/python] 함수 전체 풀이(5단계) (0) | 2022.07.29 |
[백준/python] 1차원 배열 전체 풀이(4단계) (0) | 2022.07.29 |
[백준/python] 조건문 전체 풀이(2단계) (0) | 2022.07.29 |
[백준/python] 입출력과 사칙연산 전체 풀이(1단계) (2) | 2022.07.29 |
목차
구구단 (#2739)
- Hint
문제 내 출력창에 있는 형식 (spacebar) 에 주의
- Solution
a=int(input())
for i in range(1,10):
print(f'{a} * {i} = {a*i}')
A+B - 3 (#10950)
- Hint
입출력을 하나의 반복문에 넣기는 어렵다고 판단하여 리스트를 사용하였다.
출력 조건을 충족 시키려고
print(*리스트변수명 , sep='\n')
위와 같이 표현하였다.
- Solution
count = int(input())
result = []
for i in range(count):
a, b= map(int ,input().split())
result.append(a+b)
print(*result, sep='\n')
합 (#8393)
- Hint
range(a) : 반복문을 a 번 반복
for i range(n)
에서의 i는 초기값이 0이므로 i를 합 인자로 사용하려면
for i range(n+1)
로 반복 횟수를 1회 증가시켜줘야 0, 1, 2 . . . (n) ,(n+1) 번 더해진다.
연속된 자연수의 합공식을 알고 있다면 더 간단히 해결 가능하다.
- Solution
반복문 이용한 풀이
a=int(input())
result=0
for i in range(a+1):
result += i
print(result)
자연수 합공식 이용한 풀이
a=int(input())
print(a(a+1)//2)
영수증 (#25304)
- Hint
total과 계산된 total (caltotal)을 비교해서 출력을 하게 하는 코드를 짜보았다.
- Solution
total=int(input())
n=int(input())
caltotal=0
for i in range(n):
price, ea = map(int,input().split())
caltotal+=price*ea
if total==caltotal:
print('Yes')
else:
print('No')
빠른 A+B (#15552)
- Hint
sys.stdin.readline()
sys.stdin.readline()
정의 ; Definition sys Python의 인터프리터; Interpreter - 코드를 한줄씩 읽어가며 실행되는 프로그램 에서 제공되는 모듈 중 하나 따라서 이 입력 방법을 사용시에 맨 위에 import sys 를 해주어야 한다.
2022.07.24 - [Python] - sys.stdin.readline()
sys.stdin.readline()
정의 ; Definition sys Python의 인터프리터; Interpreter - 코드를 한줄씩 읽어가며 실행되는 프로그램 에서 제공되는 모듈 중 하나 따라서 이 입력 방법을 사용시에 맨 위에 import sys 를 해주어야 한다. std
nstgic3.tistory.com
- Solution
반복문 이용한 풀이
import sys
n=int(input())
result = []
for i in range(n):
result.append(sum(map(int, sys.stdin.readline().split())))
print(*result, sep="\n")
open() 함수를 이용한 풀이 - open(0) stdin 상태
왜 open(0)에서 0은 뭐고 이것을 stdin 상태라고 부르는것일까?
파일 디스크립터 File Descriptor (fildes)
이번 포스팅에서는 파일 디스크립터와 이것이 사용된 open()에 대해서 알아볼 것이다. 목차 개요 알고리즘 공부에서 항상 숏코딩을 보게 되면 입력받는 input() 대신에 길이가 짧은 open(0)으로 대체
nstgic3.tistory.com
import sys
for n in [*open(0)][1:]:
print(sum(map(int,n.split())))
open(0)
맨 앞의 테스트케이스 T와 그 뒤의 int 쌍을 저장한다.
[*리스트명]
A+B-3 hint 란에 기술
[1: ]
리스트의 첫 번째 이후로 부터의 값을 도출한다. (2번째 ~ )
n (0부터 시작) 번째 open 에 기록된 라인부터 차례대로 출력한다.
반복문을 이용한 풀이와는 다르게 print가 반복되면서 줄바꿈이 시행된다.
N 찍기 (#2741)
- Solution
반복문 이용한 풀이
n = int(input())
for i in range(n):
print(i+1)
range 함수 이용하여 바로 출력하기
print(*range(1,int(input())+1))
range(1, n)
1부터 n까지의 리스트를 생성
기찍 N (#2742)
- Solution
반복문 이용한 풀이
n = int(input())
for i in range(n):
print(n-i)
A+B -7 (#11021)
- Hint
빠른 A+B 의 Solution 참고
- Solution
readline() 이용한 풀이
import sys
n = int(input())
result=[]
for n in range(n):
result.append(sum(map(int, sys.stdin.readline().split())))
for i in range(len(result)):
print(f'Case #{i+1}: {result[i]}')
result 리스트를 생성하여 출력부에서 원하는 두 수의 합을 저장하여 출력을 하는 방식이다.
open() 이용한 풀이
i=0
for a,_,b,_ in [*open(0)][1:]:
i+=1
print(f'Case #{i}:',int(a)+int(b))
open(0)를 통하여 입력을 받고 [1:] 첫째항을 제외한 다음 항부터 입력을 한다.
첫째항(n)이 없어도 n번 만큼 반복이 가능하게 되는 이유는 받아온 입력을 for a,_,b_ 을 통하여
첫째 인수(a), 공백(_), 다음 인수(b), 줄바꿈(\n) 을 한 세트로 받아오기 때문이다.
터미널에서는 왜 실행이 되지 않을까?
A+B -8 (#11022)
- Hint
빠른 A+B 의 Solution 참고
- Solution
readline() 이용한 풀이
import sys
n = int(input())
result = []
for i in range(n):
a,b = map(int, sys.stdin.readline().split())
result.append([a,b,a+b])
for i in range(len(result)):
print(f'Case #{i+1}: {result[i][0]} + {result[i][1]} = {result[i][2]}')
위의 문제와 비슷하지만 result 리스트 내에 리스트를 하나 더 만들어 a, b, a+b 값을 각각 저장하여 리스트 내 리스트를 구현하여 출력하였다.
open() 이용한 풀이
i=0
for a,_,b,_ in [*open(0)][1:]:
i+=1
print(f'Case #{i}:',a,'+',b,'=',int(a)+int(b))
위 문제의 풀이를 아주 조금만 변경하면 쉽게 해결된다.
별찍기 (#2438)
- Hint
반복문을 이용하면서 루프 반복시에 증가하는 값을 이용해보기
- Solution
반복문 두번 사용하기
for i in range(int(input())):
for n in range(i):
print('*', end='')
print('*')
print() 함수 내 출력 str 을 i 곱하여 나타내기
for i in range(int(input())):
print('*'*(i+1))
숏코딩
for i in range(int(input())):print('*'*-~i)
어케했누
별찍기 -2 (#2439)
- Hint
반복문을 이용하면서 루프 반복시에 증가하는 값을 이용해보기
출력시에 공백 개수에 유의하기
- Solution
반복문 두번 사용하기
n = int(input())
for i in range(n):
for s in range(n-i-1):
print(' ', end='')
print('*'*(i+1))
숏코딩
N=i=int(input())
while 0<i:
i-=1
print(" "*i+"*"*(N-i))
위 의 N과 i를 동시에 받아서 하나의 인자만 변화시키는 테크닉은 유용하게 쓰일것 같다.
X보다 작은 수 (#10871)
- Hint
반복문을 이용하면서 루프 반복시에 증가하는 값을 이용해보기
- Solution
for 문과 조건문을 이용
n,std = map(int, input().split())
num_list=[]
num_list = map(int, input().split())
for i in num_list:
if i<std:
print(i, end=' ')
std(기준값)을 리스트에 저장된 인자들과 비교하여 작은 경우에 출력을 하도록 프로그래밍 하였다.
숏코딩
n,x,*a=map(int,open(0).read().split())
for i in a:
i<x==print(i,end=' ')
open(0) 함수를 이용해 전부 불러온 다음에 앞의 두가지 인수를 제외한 나머지 부분을 a의 리스트 내에 저장하였다.
i<x 로 조건식을 만들고 이 조건식이 맞은 경우에 ? 라기에는
n,x,*a=map(int,open(0).read().split())
for i in a:
i<x!=print(i, end=' ')
이것도 같은 결과가 나온다(?)
A+B -5 (#10952)
- Hint
반복문과 조건문의 동시사용을 어떻게 할지 알아보기
리스트 마지막 인자를 제외하고 출력을 하고싶으면 [:-1] 로 표현하면 된다.
- Solution
while을 이용한 풀이
a=[]
i=0
while i == 0:
result = sum(map(int,input().split()))
i=1
if result != 0:
a.append(result)
i=0
for i in a:
print(i)
i를 스위치 처럼 이용하여 풀었는데... 뭔가 더 간단히 표현이 가능할것 같지만 숏코딩은 open 으로 구현하였다.
open()을 이용한 풀이
for a,_,b,_ in [*open(0)][:-1]:
print(int(a)+int(b))
리스트 슬라이싱을 이용하여 맨 뒤의 0을 제외하여 출력하도록 하였다.
A+B -4 (#10951)
- Hint
EOF : 텍스트 파일의 끝을 만나게 되면 얻을 수 있는 값이다.
터미널 내에선 ctrl + z 를 누르고 엔터키를 누르면 된다. getchar : -1
파이썬에서 EOF 를 선언할 경우에는 내장함수 명령인 sys의 readline 함수나 input 함수의 사용시에 끝까지 읽어들이기 때문에 끝나지 않을때 이용하게 되는데
While 문을 사용하게 될 경우에
while True:
try:
except EOFError:
break
이런 식으로 표현해주면 된다.
- Solution
예외처리를 이용한 EOF 발생을 이용한 풀이
while True:
try:
a, b = map(int, input().split())
print(a+b)
except EOFError:
break
input(), readline()의 경우에는 이런식으로 EOFError 를 조건으로 입력을 끝내고 원하는 다음 작동을 할수 있게 한다.
sys의 라이브러리 readlines을 이용한 풀이
import sys
lines = sys.stdin.readlines()
for line in lines:
a,b = map(int, line.split())
print(a+b)
readlines 를 이용하여 전체 문장을 가져온뒤에 반복문을 통하여 하나의 라인씩을 따로 뽑아내 출력하는 방식이다.
open(0) 와 비슷한 계열이라고 보면 쉽다.
open()을 이용한 풀이
for a,_,b,_ in [*open(0)]:
print(int(a)+int(b))
사실은 터미널에서도 EOFError 가 필요해야 제대로 작동하지만 백준의 채점방식은 입력물을 넣고 입력 완료 ^Z 를 하기 때문에 원래는 open을 사용한 풀이도 EOFError 가 들어가야한다.
숏코딩
for i in open(0):print(sum(b'%a'%i)%24)
항상 상위 숏코딩은 대단한것 같다
더하기 싸이클 (#1110)
- Hint
반복문을 이용하면서 루프 반복시에 증가하는 값을 이용해보기
- Solution
while()을 이용한 풀이
a = int(input())
i=0
count = 0
temp = a
while i==0:
count+=1
unit = temp%10
ten = temp//10
tempr = (unit+ten)%10
temp = unit*10 + tempr
if a==temp:
i=1
print(count)
마찬가지로 i를 스위치처럼 이용하여 지정된 조건이 만족시에i 의 값이 바뀌면서 반복을 종료하고 반복구문 내에 있던 count 값을 출력하도록 설계하였다.
'Baekjoon > Stepbystep' 카테고리의 다른 글
[백준/python] 문자열 전체 풀이(6단계) (0) | 2022.07.31 |
---|---|
[백준/python] 함수 전체 풀이(5단계) (0) | 2022.07.29 |
[백준/python] 1차원 배열 전체 풀이(4단계) (0) | 2022.07.29 |
[백준/python] 조건문 전체 풀이(2단계) (0) | 2022.07.29 |
[백준/python] 입출력과 사칙연산 전체 풀이(1단계) (2) | 2022.07.29 |