[합]-8393번
8393번: 합
n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.
www.acmicpc.net
My answer
print(sum([i for i in range(int(input())+1)]))
Another answer
n=int(input())
print(int(n*(n+1)/2))
--------------------
n=int(input());print(n*-~n//2)
나는 문제 그대로를 의미해서 sum함수를 이용해서 풀었고 아래는 가우스 함수를 이용하였다 이렇게 1~n까지의 합을 구할 때 가우스 공식보다 빠른건 없는 것 같다. 그냥 시간복잡도가 O(1)이다. 아래 코드에서 (-~n)의 의미는 (n+1)을 의미한다. ~는 2의보수를 취하는 방법으로 1의 ~를 취하면 -2가 된다. 따라서 다시 -를 붙여줘서 n+1로 만드는 것이다. 굳이 n+1로 안쓴 이유는 메모리를 더 절약할 수 있기 때문이다. -백준 bupjae님의 답변
[별 찍기-1]-2438번
2438번: 별 찍기 - 1
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
www.acmicpc.net
My answer
for i in range(int(input())):
print('*'*(i+1))
Another answer
for i in range(int(input())):
print('*'*-~i)
[별 찍기-2]-2439번
2439번: 별 찍기 - 2
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
www.acmicpc.net
My answer
n=int(input())
for i in range(n):
print(' '*(n-1-i)+'*'*(i+1))
[별 찍기-3]-2440번
2440번: 별 찍기 - 3
첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제
www.acmicpc.net
My answer
for i in range(int(input()),0,-1):
print('*'*i)
[별 찍기-4]-2441번
2441번: 별 찍기 - 4
첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
www.acmicpc.net
My answer
n=int(input())
for i in range(n,0,-1):
print(' '*(n-i)+'*'*i)
[별 찍기-5]-2442번
2442번: 별 찍기 - 5
첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.
www.acmicpc.net
My answer
n=int(input())
for i in range(n):
print(" "*(n-1-i)+"*"*(2*i+1))
대칭이라고 해서 각줄에 *을찍고 공백도 프린트해줬었는데 그렇게 하면 출력오류 뜬다. 그냥 공백* 만 입력하면된다.
[별 찍기-8]-2445번
2445번: 별 찍기 - 8
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
www.acmicpc.net
My answer
import sys
n=int(sys.stdin.readline())
for i in range(n):
print("*"*(i+1)+" "*(n-1-i)*2+"*"*(i+1))
for i in range(n-1,0,-1):
print("*"*i+" "*(n-i)*2+"*"*i)
Another answer
a = int(input())
for i in range(-a+1,a):
i=abs(i)
print('*'*(a-i)+' '*(2*i)+'*'*(a-i))
아래 코드는 내가 반복문을 두개 나눠서 쓴걸 절댓값을 이용해서 한번에 풀었다.
[별 찍기-12]-2522번
2522번: 별 찍기 - 12
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
www.acmicpc.net
My answer
import sys
n=int(sys.stdin.readline())
for i in range(n):
print((n-i-1)*" "+"*"*(i+1))
for i in range(n-1):
print((i+1)*" "+(n-i-1)*"*")
Another answer
for i in range(1,2*n):
print(' '*(abs(n-i))+'*'*(n-abs(-i+n)))
아래 코드역시 절댓값을 이용해서 반복문 하나로 구현하였다.
[별 찍기-9]-2446번
2446번: 별 찍기 - 9
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
www.acmicpc.net
My answer
import sys
n=int(sys.stdin.readline())
for i in range(-n,n+1,1):
if(i!=0 and i!=1):
i=abs(i)
print(" "*(n-i)+(i-1)*"*"+"*"+(i-1)*"*")
Another answer
a=int(input())
for i in range(-a+1,a):
i=abs(i)
print(' '*(a-i-1)+'*'*i*2+'*')
[별 찍기-16]-10991번
10991번: 별 찍기 - 16
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
www.acmicpc.net
My answer
import sys
n=int(sys.stdin.readline())
for i in range(n):
print((n-1-i)*" "+"* "*(i+1))
[별 찍기-17]-10992번
10992번: 별 찍기 - 17
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
www.acmicpc.net
My answer
import sys
n=int(sys.stdin.readline())
for i in range(n):
if(i!=n-1 and i!=0):
print((n-1-i)*" "+"*"+(2*i-1)*" "+"*")
else:
print(" "*(n-1-i)+(2*i+1)*"*")'코딩테스트 > 백준[Python]' 카테고리의 다른 글
| [Python/백준] #10814 - [나이순 정렬] (0) | 2021.11.28 |
|---|---|
| [Python/백준] #11650 - [좌표 정렬하기] (0) | 2021.11.28 |
| [Python/백준] 수 정렬하기 (0) | 2021.11.27 |
| [Python/백준] 기초문제들 3 (0) | 2021.11.26 |
| [Python/백준] #2875 - [대회 or 인턴] (0) | 2021.11.22 |