Programming/SW Expert Academy

SW Expert 아카데미 // 5688

껨코 2021. 1. 19. 15:31

SW Expert 아카데미 5688번 "세제곱근을 찾아라" 문제입니다.

TC = int(input())
 
dic = {}
for i in range(0, pow(10,6)+1):
    dic[pow(i, 3)] = i
keys = dic.keys()
 
for tc in range(1, TC+1):
    N = int(input())
    if N in keys:
        print("#%s"%tc, dic[N])
    else:
        print("#%s"%tc, -1)

수를 입력받았을 때 그 수의 세제곱근이 정수인지를 판별하는 문제다.

 

C, C++, Java의 경우는 수의 범위 같은 파이썬에서 고려하지 않아도 되는 것들을 고려해야해서 어려운 문제일수도 있지만 파이썬의 경우로 풀면 썩 어렵지는 않다.

 

파이썬이 제공하는 dictionary(딕셔너리) 객체를 이용하면 풀 수 있다.

 

딕셔너리는 리스트와 비슷하지만 키와 값으로 구성되어 있는데 이를 활용하면 각 값에 맞는 값을 일대일로 대응 시킬수 있다.

 

나의 경우는 처음에 for 반복문을 활용해서 큰 세제곱근 딕셔너리를 만들었다. 1의 세제곱근은 1이니 dic[1] = 1, 8의 세제곱근은 2니까 dic[8] = 2 이러한 방법으로 for문을 사용해서 할당을 하였다.

 

그 후에 값이 입력되었을 경우 입력된 값이 딕셔너리의 키값에 있는지 키로 만든 리스트(keys = dic.keys())를 사용해서 확인을 하였다. 

 

입력된 값이 키 리스트에 있을 경우 그 키에 맞는 값을 출력해주고 없을 경우는 -1을 출력해주면 된다.

 

 

몇몇의 사람들은 파이썬으로 하면 편한 것을 알겠는데 그럼 더 어려운 언어(C, C++, Java)를 다루는 사람들을 우대하지 않느냐고 하는데 기업들의 코딩테스트는 파이썬으로도 많이 본다.

 

면접에서는 코딩에 대한 직접적인 질문보다는 컴퓨터 공학에 대한 전반적인 지식을 물어보기 때문에 쉬운 파이썬을 한다고 경쟁력이 떨어질 것이라는 걱정은 굳이 하지 않아도 된다.