알고리즘 - 입출력 (백준 1924, 8393, 10818, 2438, 2439, 2438, 2439, 2440, 2441, 2442, 2445, 2522, 2446, 10991, 10992) 본문
Algorithm/백준
알고리즘 - 입출력 (백준 1924, 8393, 10818, 2438, 2439, 2438, 2439, 2440, 2441, 2442, 2445, 2522, 2446, 10991, 10992)
ksoes 2022. 4. 12. 16:48
boj.kr/문제번호
1924
a = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'] # 1.요일에 대한 리스트
b = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 2.월에 대한 리스트
m,d = map(int, input().split()) # 3.월 일 입력
day = 0 # 계산할 날짜
for i in range(0, m-1): # 4.리스트의 인덱스는 0부터 시작하기 때문에 범위는 0,x-1로 설정, 요일을 구하는 방법은 day를 다 더해서 7로 나누면 요일이 나오기 때문에
day += b[i] # 데이를 다 더함
day = (day+d)%7 # 5.더한 day를 7로 나눈
print(a[day]) # 6.나머지로 요일을 판별
8393
a = int(input())
sum=0
for i in range(a+1) :
sum += i
print(sum)
10818
a = int(input())
lis = list(map(int, input().split()))
print(min(lis), max(lis))
2438
a = int(input())
for i in range(a) :
print('*'*(i+1))
2439
a = int(input())
for i in range(1, a+1) : # 1부터 a까지
print(" "*(a-i) + "*"*i) # a-i만큼 공백 넣고, i만큼 별 찍고 줄넘김
2440
a = int(input())
for i in range(a, 0, -1) : # a가 0일때 반복문을 종료하므로 0까지.
print("*"*i)
2441
a = int(input())
for i in range(a, 0, -1) :
print(" "*(a-i)+"*"*i)
2442
# 2442는 '출력형식 잘못되었습니다' 검색해서 해결을 봤다. 다른코드 참고는 안했지만 그냥 주석 달아놔야지
n = int(input())
for i in range(n):
print(" "*(n-(i+1))+"*"*(2*(i+1)-1)) # 앞에 빈 공간은 n-i씩 줄어드므로 ' '에 (n-(i+1))을 곱했다.
# 별은 문제에 나와있듯이 2*n-1의 개수로 늘어난다고 했으니 n대신 증가할 i+1를 넣어준다(0부터 시작하니 +1)
# 사실 앞에 공백이 있어서 뒤에 공백도 있어야겠지 싶어 넣었더니 출력오류를 만났다. 검색하니 뒤에 공백을 빼면 된다더라. 그래서 빼서 맞게되었다.
2445
n = int(input())
j=1
for i in range(2*n-1):
if i+1 <= n :
print("*"*(i+1) + " "*(2*n - 2*(i+1)) + "*"*(i+1))
else :
print("*"*(i-(j*2-1)) + " "*(j*2) + "*"*(i-(j*2-1)))
j+=1
2522
n = int(input()) # 3
j=0
for i in range(2*n-1) : # 0~4
if i < n :
print(" "*(n-(i+1)) + "*"*(i+1))
else :
print(" "*(j+1) + "*"*(n-1-j))
j+=1
2446
j=1
n=int(input())
for i in range(2*n-1):
if i<n:
print(' '*i + '*'*((2*n-1)-(i*2)))
else:
print(' '*(i-j*2) + '*'*(2*j+1))
j+=1
10991
n=int(input()) # 반복할 횟수
for i in range(1, n+1): # 1부터 n까지 반복하는데 for()문의 범위는 마지막 인덱스는 들어가지 않으므로 +1을 해준다
print(' '*(n-i) + "* "*(i-1) + "*")
# i값이 증가할수록 ' '은 점점 감소하도록 (n-i)개수만큼 ' '을 찍고,
# *과 ' '을 하나로 묶어 본래의 i만큼 출력되도록 한다(i+1을 했으므로 1을 다시 빼준다, 그래야 인덱스가 0부터 시작하므로)
# 마지막은 항상 *로 마무리가 되므로 끝에는 *을 출력이 되도록 한다.
# 이렇게 *이 마지막에 항상 출력되게 함으로써 시작(빈칸)과 끝(*) 사이에 '* '(별과빈칸)이 쌍으로 묶여 처리되도록 할 수 있다.
# 참고 : https://jyeonnyang2.tistory.com/33
10992
n=int(input())
for i in range(0, n):
if i==0:
print(' '*(n-1) + "*") # 첫째줄은 항상 n-1개의 빈칸과 1개의 * 출력
elif i==n-1:
print('*'*(2*n-1)) # 마지막줄은 항상 2n-1개의 별 출력
else:
print(' '*(n-i-1) + "*" + ' '*(i*2-1) + "*") # 중간은 n-i-1개씩 감소하는 빈칸과 2i-1개씩 증가하는 빈칸, 그리고 끝에 항상 *을 출력하도록 한다
'Algorithm > 백준' 카테고리의 다른 글
알고리즘 - DP (백준 1463, 11726, 11727, 9095) (0) | 2022.04.27 |
---|---|
알고리즘 공부 - 입출력 (백준 2557, 1000, 2558, 10950, 10951, 10952, 10953, 11021, 11022, 11718, 11719, 11720, 11721, 2741, 2742, 2739) (0) | 2022.04.07 |
Comments