Algorithm

[Algorithm] 프로그래머스 스킬체크 레벨 1 문제(python)

반응형

1.  문제

 어떤 n 값이 들어왔을 때 n 값이 어떤 정수 x의 제곱인 경우 x+1의 제곱 값을 반환하고, 그렇지 않은 경우 -1을 반환하는 문제이다.

 

n 값 = 121 , 3 으로 테스트

def solution(n):

	a = str(n ** 0.5)

		if( a[(a.find("."))+1:] == '0' ):

			answer = ( float(a) +1)**2

		else:

			answer = -1

return answer

나는 값을 가져온 후 이 값을 str으로 바꿔서 "." 을 찾고 이 "." 의 위치를 기준으로 뒤에 값이 0 인지 아닌지로 확인했다.

더 쉬운 방법도 있을 것 같다.

 


 

2.문제

array값을 [1, 5, 2, 6, 3, 7, 4] 을 받고 commands 값을 [[2, 5, 3], [4, 4, 1], [1, 7, 3]]을 이렇게 받는다 이 경우에

commands [2, 5, 3] 이 

첫 번째 값은   array의  시작 위치 - 5

두 번째 값은 array가 끝나는 위치 - 3

세 번째 값은 이 array값을 정렬 한 값에서 3번째 값을 나타낸다. 

처음에 이걸 하면 값은 [5,2,6,3]에서 정렬한 후 

[2,3,5,6]에서  3번째 값을 뽑으면 값이 "5"가 나온다. 이 경우의 함수를 만드는 문제였다.

 

test 값 - array: [1, 5, 2, 6, 3, 7, 4] , commands:[[2, 5, 3], [4, 4, 1], [1, 7, 3]]

def solution(array, commands):

	array=array

	answer = []

	for i in range(0,len(commands)):

		a=sorted(array[ (commands[i][0])-1:(commands[i][1])] )

		answer.append(a[(commands[i][2])-1])

return answer

나는 처음에 commands에 길이에 맞춰 for문을 돌게끔 했고

그다음 a라는 변수에 commands에 맞춰 array 값을 뽑아 온 다음에 sorted로 정렬했다. 

그 후  값을 가져온 다음에 하나씩 꺼내는 작업을 하였다.

 

반응형