본문 바로가기

Python 연습문제

(13)
가운데 글자 가져오기-해결완료 def solution(s): answer = '' a=round(len(list(s))/2) if len(list(s))%2==0: answer=answer+(s[a-1:a+1]) else: answer=answer+(s[a]) return answer  뭐가 문제일까.. 기존에 주어진 answer='' 을 삭제하고round 대신에 몫을 반환하는 //를 활용하였더니 해결 되었다.def solution(s): a=len(s)//2 #기존의 round의 경우 0.5도 내림을 함 if len(s)%2==0: answer=s[a-1:a+1] else: answer=s[a] retu..
제일 작은 수 제거하기-해결 완료 def solution(arr): answer=[] if len(arr)>1: arr.sort(reverse=True) b=list(map(int,arr)) answer=b[:-1] else: answer.append(-1) return answer  어디가 틀렸는지 지금은 모르겠다....내일 다시 해보자   문제를 잘못 이해하고 있었다.주어진 값을 오름차순으로 정리하는게 아니라, 있는그대로에서 최소값을 제거하는것이었다.즉, sort 를 사용하면 안되는 문제였던것 def solution(arr): answer=[] a=arr.index(min(arr)) #최소값의 위치를 찾는다 if len(arr)>..
음양 더하기 def solution(absolutes,signs): answer=0 a=0 b=0 for i in range(0,len(absolutes)): if signs[i]==True: #부호가 양수이면 a=1 #+가 될수 있게 1로 주고 b=absolutes[i] #숫자 가져온 다음에 answer=answer+a*b #0에서 두개 곱해서 값을 만든후 더해 else: #부호가 음수이면 a=-1 ..
나누어 떨어지는 숫자 배열 점점 문제가 갈수록 머리가 아픈데, 파이썬이 어떠한 방식으로 생각을 펼쳐 나가야 되는지 훈련이 되고 있는것 같다.    def solution(arr,divisor): answer=[] # 리턴할 값을 빈 리스트로 만들고 for i in range(0,len(arr)): # 0 부터 리스트 길이 만큼 순환 시킬꺼야 if arr[i]%divisor==0: # 리스트 0번째 값을 divisor으롶 나누어 떨어지면 answer.append(arr[i]) # 기존 answer 에 그 값을 추가 해줘 else: answer ..
서울에서 김서방 찾기 이것도 좀 이상해서 포스팅 남김 주어진 상황은 일단 문제부터가 헷갈리는데 seoul 이라는 리스트가 주어지고 그 안에서는 kim 이 위치한 위치를 찾는 문제 인데, 이걸 저렇게 어렵게 써놨다니 그래서 내가 처음에 접근한 방식은 def solution(seoul): answer = f'김서방은 {seoul.index('Kim')}에 있다' return answer  안돌아네 잉..? 왜 안돼지............. 그래서 다른 사람이 작성한것 참고해서 index 함수가 아니라 while을 사용하는걸로 접근 def soution(seoul): while i 잉..? 이것도 결과는 같게 나오는데 프로그램상으로는 오류라고 인식함. 아무리 고민해도 모르겠어서 매니저에게 질의 하였고 파이썬에서 p..
두 정수 사이의 합 이 문제 해결 하는데 시간이 좀 오래 걸렸어서 포스팅으로 남깁니다.  일단 전체적으로 생각 하려니까 너무 복잡해서 차근차근 생각해 봤습니다. 그냥 a랑 b는 각각 3, 5 로 결정 되어 있다고 가정 했을때 처음에 3이란 숫자가 오고 그 후에 +1 된 4를 더해야 되고 그 다음에 +1된 5를 더해야 되는 상황 for를 쓸까 while을 쓸까 고민하다가, while이 접근 하기 가능하겠다고 결정 def solution(a, b): answer = a while True: answer = answer + (a + 1) a = a + 1 if a + 1 == b + 1: break return answer 작은 숫자가 a라고 픽스하고..
하샤드 수 차근차근 순서대로 생각 x=10list_x=list(map(int,str(x)))print(list_x)print(list_x[-1])print(list_x[-2])answer=list_x[-1]+list_x[-2]print(answer)   위와 같은 순서대로 코딩을 짜볼까 def solution(x): list_x=list(map(int,str(x))) answer=0 for i in range(1,len(str(x))+1): answer=answer+list_x[i-1] if x%answer==0: return True else: return False  굳이 def 마지막에 return을 하는게 아니라 종료하고 싶은데다가 return 값..
정수 내림차순으로 배치하기 n=118372str(n)print(str(n)[2])n은 정수로 주어지기에 이전에 풀어본것 처럼 리스트로 만들어서 순서대로 정렬한뒤 10의 단위를 곱해서 더해주면 된다고 접근을 시작함list_a=[1,3,7,4,2,3]list_a.sort()print(list_a)print(list_a[-1])print(list_a[-3])print(list_a[-6])print(list_a[0]) 리스트에서 각 요소를 뽑아내는데 i번째 자리라고 한다면 일의 자리는 10**(i-1) 이 되고 이러한 규칙성을 찾았을때0이 아니라 -1 -2 -3 -4 -5 -6 으로 접근하면 각 단위별로 10승으로 표현이 가능하다고 판단함def solution(n): answer=[] for i in range(0,5): ..
[고민문제]정수 제곱근 판별 : 있는걸 활용하자 이런 문제인데 파이썬에서는 제곱은은 **(0.5) 를 활용하면 된다는 사실을 배웠다. 근데 이걸 알고도 내가 무슨짓을 했냐면 def solution(n): answer = 0 for i in range(1,int(50000000000000**(1/2))): if i==n**(0.5): answer=(i+1)*(i+1) else: answer=-1 return answer for문을 돌려서 1부터 차례대로 답을 대조하고 찾으려는 시간이 엄청 오래 걸리면서 답도 안나오는 코드를 짜고 있었네 말그대로 제곱근을 구하라고 했으니까 제곱근이 맞는지 확인하면 되는거 아니냐 def solution(n): answer = 0 n=..
[고민문제]자연수 뒤집어 배열로 만들기 (쉬운길을 두고 돌아가지 말자) 처음 접근은 각자릿수 뽑아내는것을 생각해서 나머지를 활용하는 방법을 생각 했고 print(12345%10)print((12345%100-12345%10)//10)print((12345%1000-12345%100)//100)print((12345%10000-12345%1000)//1000)print((12345%100000-12345%10000)//10000)print((12345%1000000-12345%100000)//100000)이렇게 결과가 나오길레 될줄 알았다. 그래서 코드를 구성 해봤는데def solution(n): answer = [] while i이것을 돌려보니 소요시간이 너무 오래 걸렸다. 질문한 결과 쉬운 문제를 너무 돌아가느 방법을 택했고 심지어 저 중간에 들어간 수식조차 규..