정화 코딩

매일 문제 풀기 - 7월 셋째 주 본문

PS

매일 문제 풀기 - 7월 셋째 주

jungh150c 2023. 7. 11. 01:36

종강 이후로 자고 먹고 노는 것밖에 안 하다가 열심히 미래 고민과 준비 중인 친구랑 만나고 현타를 세게 맞이하여 다시 문제 풀기를 시작하기로 했다. 오빠가 추천해준 강의를 같이 들으면서 해볼까 생각 중이다. 중간중간 웹개발 입문 강의 듣기와 게임 개발을 병행하는 것이 이번 방학의 목표이다. 갓생.. 살아보자구..~

 


 

7/10. We love kriii (백준 10718번)

 

https://www.acmicpc.net/problem/10718

 

#python

print("강한친구 대한육군\n강한친구 대한육군")

 

시작은 브론즈5로..,,ㅎㅎㅎ (정답)

 


 

7/11. 곱셈 (백준 2588번)

 

https://www.acmicpc.net/problem/2588

 

#python

n1 = int(input())
n2 = int(input())

num1 = n2 % 10
n2 = n2 // 10

num2 = n2 % 10
n2 = n2 // 10

num3 = n2 % 10
n2 = n2 // 10

n3 = n1 * num1
n4 = n1 * num2
n5 = n1 * num3
n6 = n3 + 10*n4 + 100*n5

print(n3)
print(n4)
print(n5)
print(n6)

 

(정답)

 


 

7/12. 평균은 넘겠지 (백준 4344번)

 

https://www.acmicpc.net/problem/4344

 

#python

countNum = int(input())
count = 0

while (count < countNum) :
    data = list(map(int, input().split(" ")))

    avg = 0
    for i in range(1, data[0]+1) :
        avg += data[i]
    avg /= data[0]
    #print(avg)

    overAvgNum = 0
    for i in range(1, data[0]+1) :
        if data[i] > avg :
            overAvgNum += 1
    
    overAvgPer =  ( overAvgNum / data[0] ) * 100
    overAvgPer = round(overAvgPer, 3)
    print(str(overAvgPer) + '%')

    count += 1

 

처음에는 어떻게 데이터의 개수랑 뒤에 수들을 리스트로 받는 걸 한 줄 안에 처리하지? 이렇게 고민했는데 그냥 전부 리스트로 받고 0번째 데이터를 데이터 개수로 인식하기로 했다. 나머지는 딱히 어려운 건 없었는데 출력하는 과정에서 오류가 발생했다. 처음에는 print(overAvgPer + '%') 라고 적었는데, 찾아보니 숫자를 문자열과 같이 출력하려면 숫자를 문자형으로 바꿔주어야 되는 거였다! print(str(overAvgPer) + '%') 이렇게!! 아 그리고 소수점 셋째 자리까지 출력하는 건 round 함수를 사용하였다. (정답)

 


 

7/13. 숫자의 개수 (백준 2577번)

 

https://www.acmicpc.net/problem/2577

 

#python

numA = int(input())
numB = int(input())
numC = int(input())
result = numA * numB * numC
numData = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

while (result != 0) :
    num = result % 10
    result = result // 10
    numData[num] += 1

for i in range(0, 10) :
    print(numData[i])

 

(정답)

 


 

7/14. 숫자의 합 (백준 11720번)

 

https://www.acmicpc.net/problem/11720

 

#python

num = int(input())
data = list(map(int, input())) #숫자의 각 자리수를 리스트로 변환
sum = 0

for i in range(0, len(data)) :
    sum += data[i]

print(sum)

 

오늘은 알바도 하고 게임 개발도 열심히 했으니 간단하게 브론즈4로~ 히힛. 숫자의 각 자리수를 리스트로 변환하는 법!! data = list(map(int, input())) !! 그리고 간단하지만.. 리스트의 길이를 구할 때는 len(리스트 이름) ..!! (정답)

 


 

7/15. 달팽이는 올라가고 싶다 (백준 2869번)

 

https://www.acmicpc.net/problem/2869

 

#python

up, down, goal = map(int, input().split(" "))
current = 0
count = 0

while (True) :
    count += 1
    current += up
    if (current >= goal) :
        break
    current -= down

print(count)

 

이렇게 하니까 시간 초과 뜸. (오답) 이렇게 한단계 한단계 하면 안 되겠다 싶어서 다른 방법을 찾았다.

 

#python

import math

up, down, goal = map(int, input().split(" "))
once = up - down
goalBefore = goal - up

ans = math.ceil(goalBefore/once) + 1

print(ans)

 

나름의 규칙을 찾아서 간단하게 만들었다. 이 과정에서 올림이 필요했는데 올림함수 ceil과 내림함수 floor은 math라는 라이브러리에 있기 때문에 맨 위에 import math를 적어주어야 한다. (정답)

 

Comments