Share/Pyhton
-
[프로그래머스]Lv1. 예산Share/Pyhton 2021. 5. 3. 15:39
방법1 1. for loop를 통해서 하나씩 새로운 배열하나에다가 값을 넣는다. 2. 넣고 나서 배열의 총합이 budget보다 작은지 확인하고 cnt를 올린다. 3. 크다면 continue로 다음 인자를 비교한다. 4. 새로운 배열(=budget보다 값이 작은 합들의 모임) 의 갯수를 리턴한다. 계속 에러가났다. 50%밖에 통과가 안되었음. 아차 싶었다. 너무쉽게 문제를 여겼다. sorting이 안되어있기때문에, for문을 두개 돌려서 i, j를 바꿔가면서 ..... (직감적으로 복잡도가 o^2 로 올라간다) 방법2. 1.sort를 하고 나서 하나씩 값을 넣어서 합을 따지자. 2. 합을 따지기 보다는 반대로 생각하자. 3. 합을 넘어가는 요소를 빼서 남아있는 리스트의 갯수를 파악하자. 코드 잘못된예 de..
-
[프로그래머스] Lv1. 문자열 내 마음대로 정렬하기Share/Pyhton 2021. 4. 15. 15:23
막힌점 key-value 가 있으면, 모음만 뽑아서 새로운 리스트를 만들고, 그 리스트를 정렬 시킬때, 이전의 key-value로 배열 전체를 바꾸려고 시도했었음. 파이썬에서 key-value는 sort할때도 매개변수로 사용할 수 있었는데, 찾아보다가 일단 휴식. 생각해보니,그냥 지정된 글자를 각 글자의 맨 앞에 둔다음에, sort 하고 그글자를 빼면 되기도하네...-_-.. 해결 1. 각 string요소 값의 n 번째 글자를 인식 2. 그 글자를 각 strings의 요소 앞에 추가 3. 이 상태에서 sort 하는 것이 결국 전체 문자를 움직일 수 있음. * 3번 과정을, 요소와 이전요소의 index값을 저장해서 처리하려고 했었음 4. 맨앞에 추가된 글자 지움 코드 def solution(strings,..
-
[프로그래머스] Lv1. 문자열 내 p와 y의 개수Share/Pyhton 2021. 4. 15. 14:35
문제 문제생략. 나의 생각 S를 매개변수로 받아서, 모두 대문자로 바꾼다. 그리고 for 를 이용해서 P나 Y의 같은 값이 나오면 cnt 를 올린다. P와 Y가 갯수가 같아야 하므로, cntA와 cntB가 같으면 True, 아니면 False로 return 한다. 다른 방법으로는, C였다면, 아스키코드 값으로 검색하는 방법도 있을 것 같은데 파이썬이훨씬 간편한듯하다. 코드 def solution(s): # print(s) t = s.upper() print(t) cntA=0 cntB=0 for i in t: # print(i) if(i=='P'): cntA+=1 elif(i=="Y"): cntB+=1 if(cntA !=cntB): return False else: return True solution("p..
-
[프로그래머스] Lv1.3진법 뒤집기Share/Pyhton 2021. 4. 13. 15:08
Python3 생각 구현하고보니 굳이 리스트로 할 필요도없을 것같고, 중간에 문제처럼 순서를 바꾸려고 했는데, 그럴필요가 없이 거꾸로 리스트에 들어간다. divmod 함수를 써서 구현할 수 도있지만, 나머지연산을 직접써서 구현해보았다. python은 for문 범위제어나 순서같은 것을 정말 편하게 구현할 수 있다는 것이 재밌었다. 나의코드 def solution(n): a=[] answer=0; while n>=1: a.append(n%3) n = n//3 # print(n) # print(a) i=0; for index in range(len(a)-1,-1,-1): # print(i) # print(a[i]) answer+=a[i]*(3**index) i+=1 # print(answer) return (..
-
[프로그래머스] Lv1. 모의고사 , PythonShare/Pyhton 2021. 4. 9. 14:32
문제 알고리즘 완전 탐색 a,b,c 별로 순차적으로 비교해볼 정답을 리스트로 선언해놓는다. 정답 리스트와 i값을 증가시켜가며 순차적으로 비교한다 리스트 길이가 다르므로 모드연산으로 체크한다. 일치하면 각각 cnt값을 증가시킨다. (사실 리스트를 하나 더만들어서 append 하는 방법이 더 낫지만, 하다보니 그냥...) 최대값의 index 값을 알기위해서는 enumrate 함수를 사용해서 index 를 알아낸다. 출력 한다. 나의코드 def solution(answers): print(answers) a = [1,2,3,4,5] b = [2,1,2,3,2,4,2,5] c = [3,3,1,1,2,2,4,4,5,5] cntA =0 cntB =0 cntC =0 result = [] max_idx = None t..
-
[프로그래머스] Lv1. 같은 숫자는 싫어Share/Pyhton 2021. 4. 8. 16:09
문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한사항 배열 arr의 크기 : 1,000,000 이하의 자연수 배열 arr의 원소의 크기 : 0보다 크거나 ..
-
[프로그래머스] Lv1. 완주하지 못한 선수Share/Pyhton 2021. 4. 7. 17:16
문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 participant completionreturn ["leo", "kiki..