코테연습)백준 실버5

거북·2023년 10월 17일

TIL

목록 보기
3/22

백준 1676번 팩토리얼 0의 개수

입력받은 수에 팩토리얼을 씌워서 계산했을 때 0이 몇개씩 나오는지 계산하는 간단한 문제이다.

보통 처음 접근은 가장 러프하게 있는 그대로 접근해보는 편이라 단순히 팩토리얼을 계산해서 나온 값을 10으로 나누며 카운트를 증가시켜 보았다.

num = int(input())
fac = 1
cnt = 0
for i in range(1,num+1):
    fac = fac * i

while(fac % 10==0):
    fac = fac // 10
    cnt+=1

print(cnt)

시간제한이 넉넉한 편이라 바로 통과했다!

백준 10814 나이순 정렬

나이와 이름을 받는 2차원 배열을 생성해서 값을 넣어주고 나이순으로 정렬시켜주었다. 파이썬의 sort 매서드를 사용하여 먼저 나이순으로 정렬을 하였고, 매서드 특성상 새로 들어온 순서대로 sorting해주기 때문에 추가적으로 정렬을 해줄 필요는 없었다.

n = int(input())

people = [[0 for col in range(2)]for row in range(n)]

for i in range (n):
    people[i][0],people[i][1] = input().split()

people.sort(key=lambda x:int(x[0]))

for i in range(n):
    print(people[i][0]+" "+people[i][1])

백준 7568 덩치


앞선 나이순 정렬 문제와 상당히 유사한 문제이다. 동일하게 2차원 배열에 값들을 입력받아서 비교해주었다.

n = int(input())

people = [[0 for col in range(2)]for row in range(n)]

for i in range (n):
    people[i][0],people[i][1] = input().split()

rank=[1 for i in range(n)]

for i in range(n):
    for j in range(0,n):
        if(int(people[i][0])<int(people[j][0]) and int(people[i][1])<int(people[j][1])):
            rank[i]+=1

for ans in rank:
    print(str(ans)+" ",end="")

다만 문제에서 요구하는 출력값은 2 2 1 2 5 이런식으로 일렬로 띄어쓰기를 통해 나타내어야 했는데 처음엔 그냥 print(ans)만 해주어서 값들이 줄을 바꾸며 출력되어 테스트를 통고하지 못했다.
Python에서는 반복문에서 print로 출력하면 자동으로 줄바꿈을 해주기 때문이다.
이는 print(출력할값,end="") 다음 코드를 통해서 해결할 수 있다. 디폴트로 설정되어 있는 줄바꿈대신 아무것도 출력하지 않겠다는 뜻이다. 지금 생각해보니 print(str(ans)+" ",end="") 이 코드를 print(str(ans),end=" ")이렇게 바꾸어 주었으면 더 깔끔했을것 같다.

느낀점

실버5문제는 대체로 정렬에 관련된 문제가 많은것 같다. 사소한 실수를 제외하면 막히는 부분은 딱히 없었기에 실버4문제를 풀어보러 넘어가 보겠다!!

0개의 댓글