본문 바로가기

알고리즘 - 입출력 (백준 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개씩 증가하는 빈칸, 그리고 끝에 항상 *을 출력하도록 한다

 

 

Comments