본문 바로가기

CodingTest/SW Expert Academy

[ SW Expert Academy ] D1레벨 19문제 풀이 모음 [ 19 / 19 ]

#1.  2072. 홀수만 더하기

T = int(input())
for test_case in range(1, T+1):
    nums = list(map(int, input().split()))
    answer = 0
    answ = 0
    for num in nums:
        if num % 2 != 0:
            answer += num

    print("#{} {}".format(test_case, answer))

 

# 2.   2071. 평균값 구하기

아 진짜 .. 웃긴다.. 반올림 함수를 까먹다니 ~ 바부바부 ~ ㅎ.ㅎ

반올림: round, 올림: math.ceil, 내림: math.floor, 소수점 버리기: math.trunc

T = int(input())
for test_case in range(1, T+1):
    nums = list(map(int, input().split()))
    answer = round(sum(nums) / len(nums))

    print("#{} {}".format(test_case, answer))

 

 

# 3.  2070. 큰 놈, 작은 놈, 같은 놈

T = int(input())
for test_case in range(1, T+1):
    a, b = map(int, input().split())
    if a < b:
        answer = '<'
    elif a == b:
        answer = '='
    else:
        answer = '>'

    print("#{} {}".format(test_case, answer))

 

# 4.  2068. 최대수 구하기

T = int(input())
for test_case in range(1, T+1):
    nums = list(map(int, input().split()))
    answer = max(nums)
    print("#{} {}".format(test_case, answer))

 

 

# 5.  2063. 중간값 찾기

n = int(input())
nums = list(map(int, input().split()))
nums.sort()
print(nums[n//2])

  

# 6.  2058. 자릿수 더하기

하하.. 이번건 10초컷이네.. 전 문제는 20초컷이었는데.... 

40분, 50분 혹은 2시간을 한 문제 갖고 머리 싸매다가 이것도 문제라고 푸니까.. 재밌다.. ㅎ

n = input()
answer = 0
for num in n:
    answer += int(num)
print(answer)

 

# 7.  2056. 연월일 달력

아.. 이번 건 그래도 1분은 넘게 걸렸다.

내가 참 약한 달력 문제.. 역시는 역시다.. 또 약간 멈칫했다.

이 기회에 다른 분들 푸신 것 좀 봐야겠다. 잘 됐음.  => 거의 비슷하게 하셨네.. ? ㅎ;

T = int(input())
for test_case in range(1, T+1):
    answer = -1
    month_dict = { 1: 31, 2: 28, 3: 31, 4: 30, 5:31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}
    date_input = input()
    year = date_input[0:4]
    month = date_input[4:6]
    date = date_input[6:]
    if int(month) in month_dict and int(date) <= month_dict[int(month)]:
        answer = '/'.join([year, month, date])
    print("#{} {}".format(test_case, answer))

 

 

# 8.  2050. 알파벳을 숫자로 변환

진짜 D1은 기본 문법을 빠짐없이 아는가 숙지하는 맥락인 것 같다. 형 변환 내장 메서드 사용해서 품.

alphabet = input()
answer = []
for alpha in alphabet:
    answer.append(str(ord(alpha)-64))
print(' '.join(answer))

 

 

# 9.  2047. 신문 헤드라인

앞 문제에서 했던 말 이하동문. 나 기본 문법 아는 지 스스로 확신 갖는 중인 듯.

특히 string 관련 메서드들 한 번 쭉 보면 좋겠다.  참고 사이트 ㄱㄱ

input_string = input()
print(input_string.upper())

 

 

# 10.  2046. 스탬프 찍기

진짜 파이썬 만만세

n = int(input())
print('#'*n)

 

 

# 11.  2043. 서랍의 비밀번호

p, k = map(int, input().split())
print(abs(p-k)+1)

 

 

# 12.  2029. 몫과 나머지 출력하기

T = int(input())
for tc in range(1, T+1):
    answer = []
    a, b = map(int, input().split())
    answer.append(a//b)
    answer.append(a%b)
    print("#{} {} {}".format(tc, *answer))
# 리스트 활용하는 게 마음에 안 들어서 다른 방법 찾아 봄.
T = int(input())
 
for i in range(1,T+1):
    a, b = map(int, input().split())
    print("#%d %d %d" %(i, a//b, a%b))

 

 

# 13.  대각선 출력하기

for i in range(5):
    for j in range(5):
        if i == j:
            print('#', end="")
        else:
            print('+', end="")
    print("")
# ㅋㅋㅋㅋ... D1이어도 뭐 배울 거 없나 봤는데, 
#참.. 이렇게 풀이하시는 분도 있다.. 맞아.. 사실 상관 없다.
print("#++++")
print("+#+++")
print("++#++")
print("+++#+")
print("++++#")

 

 

# 14.  2025. N줄 덧셈

아.. 이런 문제 풀 때마다 수학 공식 많이 알아두는 게 진짜 좋다는 생각 든다.

n = int(input())
print(n*(n+1)//2)

 

 

# 15.  1938. 아주 간단한 계산기

a, b = map(int, input().split())
print(a+b)
print(a-b)
print(a*b)
print(a//b)

 

 

# 16.  1933. 간단한 N의 약수

우선 간단하게 풀기는 했는데, 이런 식으로 하면 수가 1억개가 넘을 경우에 너무 효율적이지 않을 것 같다는 생각이 들어서 약수 구하는 알고리즘이 있나 검색해봤다. 

n = int(input())
answer = []
for i in range(1, n+1):
    if n % i == 0:
        answer.append(i)
print(*answer)

약수 구하기 최적화 참고글 ㄱㄱ

 

 

# 17.  1936. 1대1 가위바위보

a, b = map(int, input().split())
if (a == 1 and b == 3) or (a == 2 and b == 1) or (a == 3 and b == 2):
    print('A')
else:
    print('B')

 

 

# 18.  2019. 더블더블

n = int(input())
num = 1
for i in range(n+1):
    print(num, end=" ")
    num *= 2

 

 

# 19.  1545. 거꾸로 출력해보아요.

n = int(input())
while n > -1:
    print(n, end=" ")
    n -= 1

 

 

 

D1 레벨은 19문제로 끝이었다.

해당 레벨에서 생각해볼 건

1. 수학 수식의 최적화된 알고리즘을 좀 더 정리하고 리마인드하자.

2. 문자열 표현을 좀 간결하게 하자. 

정도? 였다.

 

우다다 달려서 한 3-40분만에 끝낸 것 같다.