[ 이것이 코딩테스트다 ] 36일차

안영우·2021년 2월 16일
0
post-thumbnail

📍 백준 1977 - 완전 제곱수

백준 1977 - 완전 제곱수

⚡️ 나의 풀이

완전제곱수를 만들 때는 root만 계산하면 되는줄 알았는데, 반례가있기 때문에 다시 제곱을 취해줘야한다는것을 처음 알았다.

그리고 root를 취할 때 math.sqrt 대신 i ** 0.5를 하면 간편하게 계산 할 수 있다. (이것도 처음 알았다.)

  1. first = int(i ** 0.5)
  • 처음 수를 root를 취하자(i^0.5)
  1. second = first ** 2
  • first에 다시 거듭제곱(i^2)

굳이 while문을 사용하지 않아도된다.
만약, append값이 없으면 ( num == [] )과 같이 사용한다.

m = int(input())
n = int(input())

num = []
for i in range(m, n+1):
    root = int(i ** 0.5)
    if i == root ** 2:num.append(i)

if num == []:
    print(-1)
else:
    print(f'{sum(num)}\n{min(num)}')

📍 백준 4673 - 셀프 넘버

백준 4673 - 셀프넘버

int형을 str로 바꿔 계산하자.
조건에 n이 10000까지기 때문에 for문의 범위를 10001로 설정했다.

문제를 풀다가 잘 안풀리면 곧장 포기하고 다른 방법으로 풀려는 경향이 있는데, 끈질기게 끝까지 매달리는 능력을 길러야겠다.

def d(n):
    result = 0
    for i in str(n):
        result = result + int(i)
    return result + int(n)

a=[]
for j in range(1, 10001):
    n = d(j)
    a.append(n)

for k in range(1,10001):
    if k not in a:
        print(k)
profile
YW_Tech

0개의 댓글