목록PYTHON (56)
오랑우탄의 반란

오늘 오랑이는 pandas를 활용한 데이터 전처리에 대해 배울 예정입니다. 데이터 전처리WHAT 데이터 전처리란? → 원하는 데이터를 보기 위한 모든 활동 = raw 데이터 정리 작업 하나의 요리를 만들기 위한 재료 손질 작업이라고 비유할 수 있습니다. WHY 데이터 전처리를 왜 해야 하나요? → 가공되지 않은 데이터에서 원하는 정보를 편하게 얻기 위해세상의 모든 데이터가 깔쌈하게 정리되어 있다면 정말 행복하겠지요? 하지만 실제 데이터가 저장된 형태는 재각각이기 때문에 거기서 원하는 정보를 얻어내려면 우선 정리가 필요합니다. HOW 데이터 전처리는 어떻게 하나요? → 데이터 전처리를 할 때 방향성을 갖고 해야 합니다. 무슨 목적을 위해 어떤 정보를 확인하고자 하는지, 그 결과를 토대로..

오늘도 오랑이는 문제를 풉니다. 명예의 전당 (1) 풀이 과정우선 전당에 올라갈 값들을 따로 저장해둘 빈 리스트 temp 가 필요합니다. 이때 k 값과 무관하게 모든 score 값 i 는 temp에 저장되는 과정을 거치므로 for 문 안에 바로 넣어줍니다.문제 문맥상 temp 의 sort를 해야 하나 싶었지만 어차피 추출할 때 min 값으로 추출하면 돼서 굳이 정렬이 필요 없습니다. def solution(k, score): answer = [] temp = [] for i in score: temp.append(i) #조건 answer.append(min(temp)) return answer 이제 구체적인 조건에 대해 생각해봅시다.temp 의 길이가..

오늘도 오랑이는 문제를 풉니다. 콜라 문제풀이 과정뭐이리 길어..하는 문제지만 답변 코드는 굉장히 짧은 문제입니다.괜히 글도 길고 무슨 이미지도 있어서 복잡해보여도, n을 a로 나눈 값의 몫에 b를 곱해서 모두 더하는 간단한 풀이지요.이 과정을 반복해야 하기 때문에, 몫이 0이 되기 전까지 반복되도록 설정한 후, n도 매번 새로운 값으로 갱신되게 해야 합니다. 최종 코드def solution(a, b, n): answer = 0 while n//a != 0: answer += (n//a)*b n = (n//a)*b + n%a return answer 오랑우탄이 영어를 하고 오랑이가 코드마스터가 되는 그날까지~ 프로그래머스코드 중심의 개발자 채용. 스택 ..

오늘도 오랑이는 문제를 풉니다. 푸드 파이트 대회풀이 과정우선 1~len(food)의 숫자 i 에 대해서 food[i] 번 음식이 i 번 반복되도록 하는 패턴을 짜줍니다. food[i]을 둘로 나눈 몫만큼 i 를 문자열로 변환해서 곱해주면 됩니다.str(i)*(food[i]//2) 이후 반복문에 넣어보면 아래와 같이 우리가 원하는 패턴의 반이 리스트 형식으로 출력됩니다. 이때 이걸 뒤집은 형태의 리스트와 합쳐주면 되는데, 중간에 0을 넣고 싶은 것이지요.for i in range(1,len(food)): temp.append(str(i)*(food[i]//2)) temp += temp[::-1] temp.insert(len(temp)//2,'0') 이때 해당 부분이 for 반복..

파이썬 문자열과 숫자열 기초 문법을 살펴봅시다. 1 문자열1-1 문자열 연산문자열은 기본적으로 + (더하기) 기호로 연결(concatination) 해줍니다. 문자열에 숫자를 곱해서 반복시킬 수도 있습니다. a = "Hello"b = "world"print(a + b)# "Helloworld" print(a + " " + b)# "Hello world"print(a*2)# "HelloHello" 1-2 문자열 인덱싱/슬라이싱a = "Hello world"a[0] = "H"a[2:6] = "llo " #인덱스 2~(6-1) 까지a[2:] = "llo world"a[:6] = "Hello "a[:] = "Hello world"a[::-1] = "dlrow olleH" #역순 1-3 문자열 메소드cou..

오늘도 오랑이는 문제를 풉니다. 가장 가까운 같은 글자 풀이 과정문자열 s의 글자 s[i]에 대해 1) 처음 나온 경우와 2) 그 외 두 경우로 나눠서 설계해야 하는 문제입니다. def solution(s): answer = [] for i in range(len(s)): if : #조건 answer.append() #가장 가까운 글자와의 자릿수 차이 else: answer.append(-1) return answer 처음에는 조건을 'for i in s' 라고 생각했지만 그렇게 되면 전체 범위에 대해 조건이 적용되어 모든 글자에 대해 동일한 값을 출력하게 됩니다. 그렇기 때문에 더 구체적인 범위를 설정해줘야 합니다. ..

오늘도 오랑이는 문제를 풉니다. 문자열 내 마음대로 정렬하기 풀이 과정sort 함수의 특징 활용을 의도한 문제입니다. 기존에는 자동으로 오름차순 정렬이 되는 .sort, sorted() 그리고 내림차순 정렬 조건 reverse = True 만 알고 있었는데 key = 를 사용하면 조건을 자유롭게 줄 수 있다는 사실을 알게 되었습니다. sort 함수answer.sort(key = 조건)sorted(answer, key = 조건) 조건에 함수가 들어갈 경우 key = lambda x: 로 람다함수를 사용해서 넣어주면 됩니다. 생각보다 간단하네요 다중 조건을 주고 싶은 경우 쉼표로 구분하거나 lambda 함수를 사용했을 경우 함수 안에 쉼표 구분으로 넣으면 됩니다. 내림차순으로 정렬할 경우도 마찬가지로 쉼표..

오늘도 오랑이는 문제를 풉니다. 두 개 뽑아서 더하기 풀이 과정리스트의 combination 을 구해서 각각의 값을 더하는 문제입니다. 전에 비슷한 문제가 있었는데 어떤 거였는지 기억이 안 나네요..어쨌든 전과 동일하게 numbers 의 i 와 i+1 인 j 에 대해 각각 추출해서 더하면 됩니다.def solution(numbers): answer = [] for i in range(len(numbers)): for j in range(i+1,len(numbers)): answer.append(numbers[i]+numbers[j]) return sorted(answer) 다만 위와 같이 작성했더니 중복값이 나와서 틀렸습니다.파이썬 중복값 제거를 위해서는 ..